我正在使用jQuery 1.6使用.submit()事件处理程序来验证一个简单的表单,该表单无效时返回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()事件处理方法有什么问题.
解决方法
@H_403_19@ 请阅读本文档到“$().on”方法(这取代了.live())检查您的表单是否由某个ajax方法重新创建 – 如果它的处理程序将被丢弃.