gpt4 book ai didi

javascript - 我必须在 IE 中使用 jquery 框架按两次提交按钮来提交表单

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:48 25 4
gpt4 key购买 nike

我在 IE 浏览器中有一个奇怪的行为。

我有简单的形式:

<form name="test" id="test" action="some_url_here" method="post">
<input type="text" name="url" id="url" class="required" />
<input type="text" name="page" id="page" class="required" />
...
<input type="submit" name="submit" value="Submit" />
</form>

在 JS 中:

var result = true; 

$("#test").on("submit", function(){
$(".required").removeClass("error");
$.each($("input.required"), function(k, v) {
if($(this).val() === '') {
$(this).addClass("error");
result = false;
return false;
}
});

if(result) {
if(!IsValidUrl($("input[name='url']").val()){
$("input[name='url']").addClass("error");
return false;
}
} else {
return false;
}
});

假设我正确填写了所有字段。

在 Chrome 和 Firefox 中,当我按下提交按钮时,工作正常,只有一次。

在 IE(所有版本)中,我必须在提交表单上按两次才能执行/提交表单。

为什么?

我也尝试在 IsValidUrl 条件之后放置:

$(this).submit();

但没有成功。

最佳答案

这里有两个选择。两者都需要停止提交事件并验证表单。

  • 一种是遍历表单中的所有字段,将类错误添加到无效字段(如果有),设置变量结果并返回(如果一切正常,则提交)。

  • 另一种是在发现第一个无效字段时停止测试,不使用变量结果,并返回(如果一切正常,则提交)。

JS

$(function () {
$("#test").on("submit", function (e) {
// Stop the submit, because you need to validate the form before proceeding.
e.preventDefault();

// Check the comments below to decide for the use of the variable.
var result = true;

$(".required").removeClass("error");
$.each($("input.required"), function (k, v) {
// Test for empty fields or, if it's the URL, check whether is valid.
if ($(this).val() === "" || ($(this).attr("name") == "url" && !IsValidUrl($(this).val())) {
// Add class error to the invalid fields.
$(this).addClass("error");

// At this point, you could just return false stopping the loop,
// or keep going to make sure all the invalid fields will get the
// class error. In this case, you can still use the variable result.
result = false;

// Keep going, so, no return.
// return false;
}
});

// If you decided to carry on through all the fields, and don't return
// false at the first error, test for the result value.
// As this is the case...
if (!result) return false;
else $(this).submit();

// If you didn't return previously...
// $(this).submit();
});
});

关于javascript - 我必须在 IE 中使用 jquery 框架按两次提交按钮来提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17826864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com