【发布时间】:2011-10-22 19:03:20
【问题描述】:
我正在使用 .submit() 事件处理程序使用 jQuery 1.6 验证一个简单的表单,该处理程序在表单无效时返回 false:
$(function() {
$('#my-form').submit(function(event) {
if (true) { // for testing, always go through the failure path
alert("Invalid entry");
return false;
} else {
return true;
}
});
});
如果用户做出了选择,则表单已正确提交。如果用户尚未做出选择,则会显示警报并且不会提交表单(再次正确)。问题是在这种情况下,提交按钮不再起作用。换句话说,一旦失败情况发生,用户停留在表单中,但点击提交按钮什么都不做。
我已经验证了 HTML(没有重复的 ID,没有“提交”、“长度”等名称/ID)。表单是动态加载的,因此使用 Firebug 进行测试是一个问题。表单上的其他事件处理程序工作正常(例如,我在字段值更改时看到警报)。另一个奇怪的是:我用“event.preventDefault(); return true”替换了“return false”,但表单仍然提交。 (我认为 .preventDefault() 会阻止这种情况。)
有什么想法吗?
编辑:这种方法有效:
$(function() {
$('#my-form :submit').click(function(event) {
if (...validation stuff goes here...) {
alert("Invalid entry");
return false;
} else {
$('#my-form').submit();
}
});
});
我仍然想找出我的 original.submit() 事件处理程序方法有什么问题。
【问题讨论】:
-
我相信您可以在您的工作示例中只使用
return true而不是手动提交?可能是错的…… -
我遇到了完全相同的问题,但您的解决方案对我不起作用。
:submit是什么意思?它不是标准的 CSS 伪选择器... -
:submit选择器来自 jQuery (here's a description)
标签: jquery