仅在表单已提交时才触发jQuery表单验证?

时间:2013-05-24 11:42:05

标签: javascript jquery jquery-validate validation

不引人注意的验证基于以下想法:在用户提交表单之前,您进行表单验证;一旦发生这种情况,如果表单上的某些内容无效,那么一旦用户更改了每个字段,就会立即对其进行验证。

我想要做的是在表单元素上“不引人注意地”触发验证 - 也就是说,如果用户已经尝试提交表单,验证表单元素。所以我可以触发元素的验证(我在更改某个复选框时执行此操作),如下所示:

$('#chkNoPersonId').change(function(){
    $('#lstPersonId').valid();
});

但麻烦的是始终会导致lstPersonId被验证,并且无效时会显示错误,即使用户尚未提交表单一次< / em>的。我希望只有在用户尝试提交表单后才能对其进行验证。是否有一些价值我可以检查用户是否尝试提交表单,或者其他方式我可以实现此行为?

2 个答案:

答案 0 :(得分:5)

您可以在提交按钮上添加标记,以识别表单提交是否已被点击。 例如:

$('#submitButn').click(function(){
   $(this).attr('data-submitted','true');
});

在输入检查天气的每次验证中,该标志是否为真,并执行验证逻辑。

$('#chkNoPersonId').change(function(){
  if( $('#submitButn').attr('data-submitted')=='true'){
   $('#lstPersonId').valid();
  }
});

在清除或重置表单时,您可以删除该属性

 $('#submitButn').removeAttr('data-submitted');

答案 1 :(得分:1)

您是否尝试过使用submit事件处理程序?

$("form").submit(function() {
    //validate here
});

<强>源: http://api.jquery.com/submit/