60

カスタムの場所に1 つのエラー ラベル ( Not All )を配置したいと思います。jQuery はこのhttp://docs.jquery.com/Plugins/Validation/validate#toptionsオプションを提供しますが、特定のエラー メッセージを 1 つ配置し、残りすべてのデフォルトの場所を変更しない方法については何も見つかりませんでした。

以下のすべての回答を必ず確認してください。これには複数の解決策があります。皆さんありがとう!

4

4 に答える 4

88

したがって、すべての jQuery Validate エラー メッセージを 1 か所に表示する 場合は、そのページでhttp://docs.jquery.com/Plugins/Validation/validate#toptions (Find errorPlacement) オプションを使用します。

ここでいくつかの回答が1つに答えていることに気付きましたが、両方の選択肢ではありません。

1)すべてのエラーに対してカスタム配置が必要な場合は、これを行うことができます:

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

2) 1 つまたは複数のエラー ラベルの特定の場所を指定する場合は、これを行うことができます。

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);
}
于 2012-11-02T17:57:57.550 に答える
57

実際には、JavaScript コードを使用する必要はありません。これに対する簡単な解決策を発見しました。jQuery Validate に検証エラーを DOM 要素に配置させることができます。

たとえば、jQuery は次のようなエラーを生成します。

 <label for="firstname" generated="true" class="error">This field required.</label>

このラベル DOM 要素を次のtdブロックまたはli要素、またはこのように空白にしたいものに配置できます。

<label for="firstname" generated="true" class="error"></label>

jQuery はその空白のフィールドを見つけて、エラー メッセージを表示します。

label 要素のforフィールドを忘れないでください。

于 2014-12-26T07:30:26.320 に答える
17

これは、OP の HTML 構造に固有のものではなく、より一般的なソリューションです。

特定のエラー ラベルを 1 つだけ別の場所に配置し、残りをデフォルトの配置のままにする場合は、これを試してください...

$("#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);

     }
   }
});

errorPlacement:オプションのオンライン ドキュメント

于 2012-11-02T18:13:39.303 に答える