使用jQuery验证自定义错误标签放置(对于所有或部分错误)

cha*_*ork 47 validation jquery jquery-validate

我想在自定义位置放置一个错误标签(Not All).jQuery提供了这个http://docs.jquery.com/Plugins/Validation/validate#toptions选项,但我找不到任何关于如何放置一个特定错误消息而不更改其余所有内容的默认位置?

请务必检查以下所有答案.有多种解决方案.谢谢大家!

cha*_*ork 76

因此,如果您希望所有jQuery Validate错误消息都出现在一个位置,那么您将在该页面上使用 http://docs.jquery.com/Plugins/Validation/validate#toptions(Find errorPlacement)选项.

我注意到这里的一些答案回答一个但不是两个选项.

1)如果您想为所有错误定制自定义位置,可以这样说:

$("#myform").validate({
  errorPlacement: function(error, element) {
     error.appendTo('#errordiv');
   }
});
Run Code Online (Sandbox Code Playgroud)

2)如果要为一个或多个错误标签指定特定位置,可以执行此操作.

errorPlacement: function(error, element) {
    if (element.attr("name") == "email" )
        error.insertAfter(".some-class");
    else if  (element.attr("name") == "phone" )
        error.insertAfter(".some-other-class");
    else
        error.insertAfter(element);
}
Run Code Online (Sandbox Code Playgroud)

  • 嗨,我成功地将所有错误放在一个地方,但它只有一行.如何将错误分解为新行?请帮忙 (2认同)

Abd*_* I. 45

实际上没有必要使用任何javascript代码,我发现了一个简单的解决方案.您可以强制JQuery Validate将验证错误放在DOM元素中.

例如,JQuery会生成如下错误:

 <label for="firstname" generated="true" class="error">This field required.</label>
Run Code Online (Sandbox Code Playgroud)

你可以将这个标签dom元素放在你的下一个td块或li元素或任何你想要的空白像这样.

<label for="firstname" generated="true" class="error"></label>
Run Code Online (Sandbox Code Playgroud)

JQuery将找到该空白字段并为您放置错误消息.

只是不要忘记标签元素中的for字段!

  • 好方案!没有必要把jQuery弄得这么简单. (4认同)
  • 你知道`generated` 属性是否必要吗?如果没有使用 jQuery Validate 1.11.1 的属性,它似乎对我来说工作正常。 (2认同)
  • 请注意,这似乎只有在 `for` 属性设置为输入的 `name` 而不是它的 `id` 时才有效。 (2认同)

Spa*_*rky 16

这是一个更通用的解决方案,并不特定于OP的HTML结构.

如果您只想在其他位置使用一个特定的错误标签,而其余的仍保留在默认位置,请尝试以下操作...

$("#myform").validate({
  errorPlacement: function(error, element) {
     if (element.attr("name") == "myFieldName") {

       // do whatever you need to place label where you want

         // an example
         error.insertBefore( $("#someOtherPlace") );

         // just another example
         $("#yetAnotherPlace").html( error );  

     } else {

         // the default error placement for the rest
         error.insertAfter(element);

     }
   }
});
Run Code Online (Sandbox Code Playgroud)

errorPlacement:选项的在线文档