我在asp.net mvc中使用jquery。 我正在做这样的事情,以便在点击时禁用提交按钮。
但如果有验证错误,我不希望它被禁用。
$('form').submit(function () {
if ($('form').valid()) {
$('input[type=submit]', this).attr('disabled', 'disabled');
}
});
这使得它被禁用,但即使存在验证错误。 怎么了?
答案 0 :(得分:13)
$('form').submit(function () {
if ($('form').valid()) {
$('input[type=submit]', this).attr('disabled', 'disabled');
}
});
也许页面上还有其他表单,并且它验证了错误的表单?
$('form').submit(function () {
if ($(this).valid()) {
$(this).find('input[type=submit]').attr('disabled', 'disabled');
}
});
哦,你做了$('form')。validate()来启用验证(如果你使用MVC的验证我会猜测它是由MVC自动调用的,但我不是100%肯定的)?
答案 1 :(得分:0)
$('form')。valid()在控制台中运行时返回错误。你确定这是一个有效的功能吗? AFAIK不是。
在CSS中,:valid伪类应用于特定输入,而不是表单元素。我只能假设它在JavaScript中是一样的。
话虽如此,HTML验证此时有不稳定的浏览器支持,你不应该盲目依赖它。如果您的表单像一些“必需”字段一样简单,您可以遍历每个输入元素并检查this.getAttribute('required')&& this.value!=''。
答案 2 :(得分:0)
另一个技巧(不是特别相关,但我有类似的问题)是,如果你有任何服务器端验证,或服务器上真正发生的任何事情。
在后面的代码中,你的函数应该做的第一件事是重新启用那个按钮。 因为我有一个奇怪的错误(仍然无法弄清楚他们是如何做到的)但基本上:客户端验证很好(如果他们有JS禁用),并在服务器中我发现错误,我在一个错误中显示在回发后的dom中非突兀的方式。因此他们可以尝试纠正任何问题。但显然按钮被禁用了...所以我收到了数以百万计的投诉。因此,故事的道德,重新启用按钮,如果它回发到同一页面,你的按钮仍然可以工作。耶。
答案 3 :(得分:0)
您是否使用其他jquery插件在表单上使用“valid()”函数?因为$('form').valid()
在Javascript中对核心jquery lib没有任何意义