5

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

我想要做的是“不显眼地”触发对表单元素的验证——也就是说,只有在用户已经尝试提交表单时才验证表单元素。所以我可以触发元素的验证(当某个复选框被更改时我会这样做),如下所示:

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

但麻烦的是,即使用户还没有提交过一次表单,这也总是会导致lstPersonId验证并在无效时显示错误。我希望仅在用户尝试提交表单后对其进行验证。是否有一些价值我可以检查以查看用户是否已尝试提交表单,或者我可以通过其他方式实现此行为?

4

2 回答 2

5

您可以在提交按钮上添加一个标志来识别表单提交是否已经被点击。前任:

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

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

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

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

 $('#submitButn').removeAttr('data-submitted');
于 2013-05-24T11:51:50.827 回答
1

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

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

来源: http ://api.jquery.com/submit/

于 2013-05-24T11:51:03.920 回答