【问题标题】:jQuery validate plugin - how to turn off non-submit validation results?jQuery 验证插件 - 如何关闭非提交验证结果?
【发布时间】:2013-09-16 12:34:06
【问题描述】:

我使用 jquery 验证插件和 jQuery 表单插件。

我打开了电子邮件格式验证,它可以在运行时开始验证电子邮件并立即告诉用户他/她输入了无效的电子邮件格式。

但是这个检查也触发错误消息框是不行的 - 有没有办法强制验证()在输入旁边显示错误标签但同时不开火/显示error_box? (结果) 。我想在用户单击提交按钮后向结果框中添加任何内容 - 可以吗?

编辑:我认为很清楚,显然不是,所以我添加了这段代码:)

编辑 3: 我要去的地方:我确实想要 target: .result 中的消息,但只有在点击提交按钮之后 - 不是任何时候都应该尽快现在更清楚了:)

      var zadost = $("#validate_zadost").validate({
          focusInvalid: false,
          submitHandler: function(form) {
                  $(form).ajaxSubmit({
                          target: ".result",
                          success: function(){ zadost.resetForm(); }
                  });
          },
          showErrors: function(errorMap, errorList) {
            $(".result")
              .html("<div class='error_box'><h1>Nebyly vyplňeny povinné údaje nebo byly vyplňeny špatně!</h1><p>Žádost nebyla odeslána - prosím doplňte povinné údaje (ve správném formátu). (červeně zvýrazněny)</p></div>");
            this.defaultShowErrors();
          },
          errorPlacement: function(error, element) { //error message and JQUERY element coming...
            if( element.is(':checkbox') ) error.insertBefore(element).addClass('zadostErrorCheckbox');
              else error.insertAfter(element);
          }

  });

【问题讨论】:

  • 添加了额外的解释,让答案更清楚:)

标签: javascript forms jquery jquery-validate


【解决方案1】:

See the documentation.

引用标题:

“如何关闭非提交验证结果?”

听起来你想关闭所有“事件”...

$('#myform').validate({
    // options & rules,
    onkeyup: false,    // prevent validation on every key up
    onfocusout: false, // prevent validation after leaving field
    onclick: false     // prevent validation when clicking radio and checkbox
});

不要使用onsubmit 选项,因为它已经是默认行为(将其设置为true 会破坏插件)。

引用 OP:

“但是,此检查也触发错误消息框是不行的 - 有没有办法强制 validate() 在输入旁边显示错误标签但同时不触发/显示error_box?(在结果中)。我想在用户单击提交按钮后向结果框中添加任何内容 - 可以吗?"

我看不到你的代码,所以我不知道你做了什么,但是,输入字段旁边只显示错误消息标签已经默认行为。你的代码中的某些东西一定会导致其他事情发生在这里。

编辑:如果您不想显示错误框并且只在输入元素旁边的标签中显示错误,请删除整个 showErrors 回调函数。

【讨论】:

  • 编辑:-那不是我要去的地方现在达到? :)
  • @jave.web,好的,我现在明白了,但是 AFAIK 不可能推迟相同的消息而不是另一个。
  • 好的,那么删除 showErrors 可能是一种方式 - 有没有办法将您自己的操作添加到验证过程中? (不接触插件)?
  • @jave.web, “你自己的行动”?我不知道那是什么意思。您可以为任何可用选项编写自定义回调函数。如果这还不够,那么您需要自己编写或修改此插件。
  • 我一直在寻找一种方法,如何将动作(将执行的函数)传递给一些已经存在的回调,不幸的是,似乎没有这样的方法。而且由于可能的插件更新,我不想触摸插件,我将只关闭 showError 并再次打开焦点......无论如何感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
相关资源
最近更新 更多