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 回答