2011-02-06 11 views
1

私はjQuery validation pluginを使用して自分のページの一部のフォームを検証しています。いくつかのラジオボタンを除いてスムーズに動作します。jQuery検証プラグイン - ラジオボタンの問題

私は、次のコードを持っている:

$("#theForm").validate({ 
    "rules": { 
    "r1" : "required" 
    }, 
    "messages" : { 
    "r1" : { 
     "required" : "foo" 
    } 
    } 
}); 
............ 
............ 
<input type="radio" name="r1" value="1" /> 
<input type="radio" name="r1" value="2" /> 
<input type="radio" name="r1" value="3" /> 

検証動作が、「foo」というメッセージは、第1および第2のラジオボタンとの間に示されています。それはしません。私は最後のラジオボタンの後にしたい。

私は最後のラジオボタンの後に私自身のラベルを追加、と思っ問題ありません:

<input type="radio" name="r1" value="1" /> 
<input type="radio" name="r1" value="2" /> 
<input type="radio" name="r1" value="3" /> 
<label for="r1" class="error" style="display:none">bar</label> 

それは動作しますが、「バー」メッセージが代わりに表示されます。私はそれを望んでいません、私は私のメッセージがバリデーションのルールの中にあることを望みます。どうすればいいですか?

最後のラジオボタンの後にエラーメッセージを配置し、ルール(つまり「foo」)のメッセージを使用するにはどうすればよいですか?

答えて

6

オプションを設定するときにerrorPlacementコールバックを使用できます。 http://docs.jquery.com/Plugins/Validation/validate#toptions

errorPlacement: function(error, element) { 
    if (element.attr('type') === 'radio') { 
     error.insertAfter(
      element.siblings('input[type="radio"][name="' + element.attr('name') + '"]:last')); 
    } 
    else { 
     error.insertAfter(element); 
    } 
} 
0

ただ、どこでも、errorPlacement機能にラベルを置く:

errorPlacement: function(error, element) { 
      if (element.attr("name") == "sample") { 
       error.html($("#sampleErrorMessageBox")); 
      } else { 
       error.insertAfter(element); 
      } 
} 

これは私のために働きました。

http://jsfiddle.net/t53w17mj/

関連する問題