【问题标题】:Trigger jQuery form validation only if form has already been submitted?仅当表单已提交时才触发 jQuery 表单验证?
【发布时间】:2013-05-20 00:11:51
【问题描述】:

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

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

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

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

【问题讨论】:

  • 尽管我没有正确回答您的问题,但我尝试猜测。有一个 submit() 事件处理程序,可以像这样使用: $('#myForm').submit(function(){ //一旦提交表单就做事 });

标签: javascript jquery jquery-validate validation


【解决方案1】:

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

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

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

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

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

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

【讨论】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-06
    • 2018-01-09
    • 2017-03-06
    • 2016-12-16
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多