それを理解することはできません...(そしてWeb検索の長い試合から判断すると、私だけではありません。)それ以外の場合はjQT検証が適切に機能しています。ラジオだけではありません。私がやりたいのは、少なくとも1つのボタンがクリックされたことを確認することだけです。$ .tools.validator.fnを介してカスタム検証関数を設定する実験を行ってきましたが、セレクターに使用する適切なものが見つかりません。ソースコードを見るのはあまり運がなかった。何かアドバイスはありますか?ありがとう!
3 に答える
私がいる場所(または最終的にたどり着いた場所):
jQuery Tools の検証機能をラジオ ボタンで動作させるのをあきらめました。
@MK_Dev は、jQuery Validation プラグイン ( http://bassistance.de/jquery-plugins/jquery-plugin-validation/ ) を使用する方法を教えてくれました。ただし、彼の回答にある追加のメソッドは必要ありませんでした。検証プラグインをロードし、ラジオ ボタンの 1 つに「必須」のクラスを指定し、フォームで .validate() を呼び出して、ラジオ ボタンの検証を行っています。正常に動作します。
@jason のjQuery 検証プラグインを使用したラジオ ボタン グループの検証への言及も報われました。これらすべてについての私の最後の混乱は、そのページで、ベースシスタンス検証プラグインが必要ないことについての議論があることです.jQuery(1.3.2 ??)はそれ自体で検証を行うことができます. そうかもしれませんが、思いつきませんでした。
いずれにせよ、私は今、いくつかの動作検証を行っています。ありがとうございます!
これはハックであり、ニーズに合わせて調整する必要があることを認めなければなりません。これが私が思いついたものであり、より良いオプションがあるかもしれません。
マークアップの例:
<form action="" id="theForm">
<fieldset>
<input type="radio" name="sex" value="male" id="male" class="requiredCheckbox" /> <label for="male">Male</label><br />
<input type="radio" name="sex" value="female" id="female" /> <label for="female">Female</label><br/>
<input type="radio" name="sex" value="unknown" id="unknown" /> <label for="unknown">Unknown</label>
</fieldset>
<input type="button" id="validate" value="Validate" />
</form>
カスタム検証メソッドと少しのハッカーを使用した Javascript:
$.validator.addMethod('requiredCheckbox', function (val, elt) {
var valid = false;
$('input[name=' + $(elt).attr('name') + ']:radio').each(function(inx, elt) {
if (elt.checked === true) {
valid = true;
return;
}
});
return valid;
}, 'Select at least one checkbox');
var options = {
errorPlacement: function(error, elt) {
$(elt).before(error);
},
errorElement: 'div'
};
var validator = $('#theForm').validate(options );
$('#validate').click(function() {
$('#theForm').valid();
});
これは、実際のサンプルを含む JSFiddle です: http://jsfiddle.net/9DRcz/
でも解決するのは楽しい問題です:-)