jQuery submit事件处理程序只能工作一次

前端之家收集整理的这篇文章主要介绍了jQuery submit事件处理程序只能工作一次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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_404_17@解决方法
请阅读本文档到“$().on”方法(这取代了.live())

http://api.jquery.com/on/

检查您的表单是否由某个ajax方法重新创建 – 如果它的处理程序将被丢弃.

猜你在找的jQuery相关文章