1

jQuery.validate(ASP.NET MVC 1.0およびxValを使用)を使用しており、デフォルトのエラー表示コードをオーバーライドして、要素にエラースパンを追加する代わりに、エラーメッセージ自体を含むエラー画像アイコンを追加しようとしています。画像のタイトル/alt属性。

私はこれを私のページの先頭から呼んでいます:

jQuery.validator.setDefaults({
  errorPlacement: function(error, element) {
    var errorTag = '<img src="error.png" title="' + error.html() + '" />';
    var errorImg = $(errorTag);
    errorImg.insertAfter(element);
  }
});

正常に機能しているように見えます(適切な場所に適切なアイコンがあります)が、validate()が呼び出されるたびに、フィールドに別の検証アイコンが追加されるため、各入力の横に数十のエラーアイコンが表示されます...

検証プラグインにそのフィールドにすでにエラーがあることを通知する属性が明らかに欠落していますが、何を理解できません-htmlfor = element.Id属性を追加しようとしました、追加しようとしましたfield-validation-errorクラスですが、どこにも到達しておらず、行き詰まっています。

ありがとう、

-D-

4

3 に答える 3

3

存在するかどうかを確認する必要があります。

jQuery.validator.setDefaults({
  errorPlacement: function(error, element) {
    var errorTag = '<img src="error.png" id="myTag" title="' + error.html() + '" />';
    var errorImg = $(errorTag);

    if ($('#myTag').length == 0) {
      errorImg.insertAfter(element);
    }
  }
});
于 2011-08-05T08:31:59.060 に答える
0

問題は、jQuery.validateがerror要素を使用して、エラーがすでに発生しているかどうかを判断することです。コードは要素を追加しないため、呼び出しごとに画像が再度追加されます。

これを確認するには、次の手順を実行します。

jQuery.validator.setDefaults({
  errorPlacement: function(error, element) {
    error.insertAfter(element);  // Add the error element

    var errorTag = '<img src="error.png" title="' + error.html() + '" />';
    var errorImg = $(errorTag);
    errorImg.insertAfter(element);
  }
});

これで、追加された画像が1回だけ表示されます。 ただし、エラーが存在する場合、errorPlacementは再度呼び出されないため、errorTagは変更されません。同様に、成功ラベルが追加されても、画像は自動的に消えません。

jQuery.validateメソッドを使用してこれを行う方法があるかもしれませんが、正直なところ、これはコードを調べるだけです。私はまだそれがすべてどのように扱われるかを正確に理解しようとしています。

于 2010-11-30T21:36:25.873 に答える
-1

jQuery 検証を使用してクライアント側とサーバー側の両方の検証を最初から最後まで行う方法を説明するブログ投稿をここに投稿しました。それが役に立てば幸い!

于 2011-08-23T23:54:51.553 に答える