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

Jez*_*Jez 5 javascript validation jquery jquery-validate

不引人注意的验证基于这样的想法:在用户提交表单之前,您进行表单验证; 一旦发生这种情况,如果表单上的某些内容无效,则每个字段在用户更改后立即进行验证.

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

$('#chkNoPersonId').change(function(){
    $('#lstPersonId').valid();
});
Run Code Online (Sandbox Code Playgroud)

但问题是,即使用户尚未提交表单一次,这将始终导致lstPersonId验证并在无效时显示错误.我希望只有在用户尝试提交表单后才能对其进行验证.是否有一些值我可以查看用户是否已尝试提交表单,或者其他方式我可以实现此行为?

Sud*_*dav 5

您可以在提交按钮上添加标记,以识别已经单击的表单提交.例如:

$('#submitButn').click(function(){
   $(this).attr('data-submitted','true');
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

 $('#submitButn').removeAttr('data-submitted');
Run Code Online (Sandbox Code Playgroud)

  • 我实际上最终使用jQuery的`data`功能(`.data('submitted',true)`在表单提交上)而不是`attr`来记住表单提交的时间,但我基本上使用了这个解决方案.谢谢. (2认同)