jQuery中的表单提交事件错误

时间:2012-04-28 19:44:43

标签: jquery

我有一个接受用户输入数字的表单。在表单提交时,调用JS函数来检查表单状态(如果参数正常,等等)。其中一个操作是根据其参数(从表单中读取)启动AJAX请求以接收两个值。所以,我有一个名为CheckForm()的函数,它在表单提交时运行,在其中,我有一个启动AJAX请求的块:

var error = 0;
function CheckForm() { // run on form submit
  var items = $('myitems');
  if (items != undefined || items != null) {
    items.each(function() {
      if (!isNaN($(this).val())) { // check for number
        $.get('myurl', {
           // parameters
        },
        function(data) {
          if (data != "0") {
            if (condition) error = 1;
          }
        });
      }
      if (error == 1) return false;
    }); // end each function
    if (error == 1) {
      alert("You have made an error.");
      error = 0;
      return false;
    }
  }
  return true;
}

我还声明了一个全局变量(错误)来检查检查期间是否发生了错误。 myitems是检查运行的html元素的集合。因此,此函数绑定到表单提交点击事件,并在提交时运行。

问题:这不起作用。显示警报并立即刷新浏览器页面(提交表单),而无需用户首先单击“确定”按钮。

还有其他方法可以实现吗?

1 个答案:

答案 0 :(得分:2)

首先,当你在jQuery中使用选择器时,结果将永远不会为null或未定义,所以你可以这样做:

$('myitems').each(function()....

其次,您必须意识到正在进行异步调用(AJAX),这意味着即使其中一个CheckForm调用完成,函数get也可能会返回。 / p>