event.prevendefault()在具有each()函数的函数内不起作用

时间:2017-03-22 03:25:17

标签: javascript jquery preventdefault

我有一个将进行简单验证的功能,如果每个输入文本都是empyt,则会弹出一个警告,程序将停止。单击按钮后,功能将启动。我已经完成了传递事件,但不知何故事件.PreventDefault()无法正常工作,所以仍然访问服务器端代码。 以下是进行简单验证的功能。

var checkRequired = function(event)         
  $('.box-load .requir').each(function(index,item) {
    var index = $(item).data('index');
    if(index === 'text') {
      if ($(item).val() == "") {
        $(this).focus();
        alert('Please input the required parameter');
        event.preventDefault();
      }
    }
  });
}

对于触发器,我使用此代码的函数:

$(document).on('click','.box-load .btn-save', function(event) {
event.preventDefault();
checkRequired(event);

勾选checkRequired(),我要做一个ajax请求。我想要的是,如果其中一个输入文本为空,则事件停止。但是使用该代码,是行不通的。有什么建议吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果您致电event.preventDefault(),则不会触发该事件的默认操作。

$(document).on('click','.box-load .btn-save', function(event) 
{    
     checkRequired(event);
     event.preventDefault();

event.preventDefault()应该在for循环之外。

var checkRequired = function(event)    
{      
      $('.box-load .requir').each(function(index,item) {
        var index = $(item).data('index');
        if(index === 'text') {
          if ($(item).val() == "") {
            $(this).focus();
            alert('Please input the required parameter');
          }
        }
      });
 event.preventDefault();
 }

答案 1 :(得分:0)

event.preventDefault()将停止默认操作,而不是停止函数调用。如果您不是从您的函数中专门return,它将继续并启动ajax。