3

チェックボックスのカスタム検証をセットアップしようとしています。それぞれ同じ名前のチェックボックスが 7 つあり、最後のチェックボックスがオンになっているかどうかを識別したいと考えています。これは私が持っているコードであり、それが間違っていることを知っています. :last および :checked セレクターを適切にスタックする方法について誰かが光を当てることができますか?

$.validator.addMethod('ObserverOtherBox',function(v, e) {
   return ($('[[name="4_observers"]:last]:checked').length == 1) && ($('[name="4_observerstxt"]').length == 0) ;
}, 'Please enter the other observers');
4

2 に答える 2

10

次のようにセレクターをスタックします。

$('[name="4_observers"]:last:checked')

スペースを入れずに、それらを一緒に追加するだけです。これは、次のいずれであっても、すべてのセレクターで機能します。

$('[name="4_observers"][id=4][rel=bob]')
// or:
$(':input:checkbox:last:checked')

またはもちろん、それらは実際のセレクターとしてはひどいものですが、要点はわかります :)

また、余談ですが、特定のコードを次のように書くこともできます。

$.validator.addMethod('ObserverOtherBox',function(v, e) {
  return $('[name="4_observers"]:last').is(':checked') 
      && $('[name="4_observerstxt"]').length == 0;
}, 'Please enter the other observers');
于 2010-04-07T19:29:04.213 に答える
0

おかげでうまくいきました。is(':checked') の代わりに .prop('checked') を使用しました。

        var lastCheckBox = $('[name="LastCheckboxId"]:last');

        //onload
        $(".someDiv").hide();
        if (lastCheckBox .prop('checked')) {
            $(".someDiv").show();
        }

        //onchange
        lastCheckBox.change(function () {
            if ($(this).prop('checked')) {
                $(".someDiv").show();
            } else {
                $(".someDiv").hide();
            }
        });
于 2014-02-14T00:04:32.897 に答える