返回false;在jquery .each函数中不起作用

时间:2018-10-21 16:13:08

标签: javascript jquery

在发布此问题之前,我尝试了StackOverflow,但没有找到答案。

所以,问题是,我有一个带有一些值的数组(假设4,6,7,8,10等)。我使用jquery的.each函数来提示警报消息。但是我的代码给了我一条警告消息,将其聚焦到所需的输入框并提交表单,并且不会“返回false”。 我希望它在聚焦后返回false。

$(document).on('keypress','#create_invoice',function(){
$.each(newArr, function( i, l ){
//alert( "Index #" + i + ": " + l );
if($.trim($('#item_name'+l).val()).length == 0)
        {
          alert("Please Enter Item Name");
          $('#item_name'+l).focus();
         // return false; //if use this not work and submit form
        }
//return false; //if use this not work and submit form
});
//return false; if i use this then submit() not work
$('#invoice_form').submit();
});

1 个答案:

答案 0 :(得分:2)

返回false起作用,但是我认为,如果返回false,您想要的是阻止表单提交。这种行为可以做到;

首先在函数参数中放入e,然后使用e.preventDefault();

接下来要做的是创建一个将为布尔值的变量,该变量将确定您是否允许表单提交。在下面的代码中,我使用了var allowSubmit

尝试下面的代码。

$(document).on('keypress', '#create_invoice', function(e) {
  e.preventDefault();

  // boolean variable
  var allowSubmit = true;

  $.each(newArr, function(i, l) {
    if ($.trim($('#item_name' + l).val()).length == 0) {
      alert("Please Enter Item Name");
      $('#item_name' + l).focus();

      // set the variable to false
      allowSubmit = false;
      return false;
    }
  });

  // check if we could submit the form
  if (allowSubmit) {
    $('#invoice_form').submit();
  }
});