2015-05-18 37 views
0

我有这些jQuery函数:JQuery的对表单提交检查所需的字段

function CheckRequired() { 
    $(".required").each(function(event) { 
     var check = $(this).val(); 

     if(check == '') { 
      event.preventDefault(); 
      alert("One or more fields cannot be blank"); 
      //alert($(this).attr("id")); 
      return false; 
     } 
     return true; 
    }); 
} 

$(document).ready(function() { 
    $("form").each(function() { 
     $(this).submit(function(event) { 
      CheckRequired(); 
     }); 
    }); 
}); 

,所以我需要的字段有一类required但提交表单时,它显示alert错误,但它仍然提交表单

我怎么能阻止它提交表单,如果有一个错误

回答

2

CheckRequired的结果()被不会从提交处理程序返回。

return CheckRequired(); 

您也可以传递事件到该功能的情况下,你不希望提交发生,里面CheckRequired做

event.preventDefault(); 

我会重做代码块...

function CheckRequired(event) { 
    var $form = $(this); 

    if ($form.find('.required').filter(function(){ return this.value === '' }).length > 0) { 
     event.preventDefault(); 
     alert("One or more fields cannot be blank"); 
     return false; 
    } 
} 

$(document).ready(function() { 
    $('form').on('submit', CheckRequired); 
}); 
+0

我尝试使用返回'CheckRequired();'但它仍然提交表格 – charlie

+0

完美!非常感谢你 – charlie

0

试试这个:

$(document).ready(function() { 
    $("form").submit(function(event) { 
    if (!CheckRequired()){ 
     event.preventDefault(); 
    } 
    }); 
}); 

我在代码中嗅到错误。您是通过各种形式的循环和检查要求你正在做一个全球查找.required

和这里的小重构,你可以做的CheckRequired功能:

function CheckRequired() { 

    var field_with_empty_ip = $(".required").filter(function(){ 
     return ($(this).val() == ""); 
    }); 

    return (field_with_empty_ip.length < 0); 

} 
+0

这就是正确的 - 你会做不做到这一点,但仍然可以运行,因为我想用'$(“形式”),以 – charlie

+1

避免回路的功能上(“提交”,函数(){。/* ... * /});'直接,因为'$('form ')'获取所有表单元素。 – kosmos

+0

这是来自@kmsdev的好消息。 @charlie你应该在你的表单范围内。我的意思是,理想情况下,当表单被提交时,您应该在该表单内寻找'.required'字段,而不是到处都是。 – roxxypoxxy

相关问题