0

我有一系列从 smarty 模板构建的复选框。选择具有WTOPS值的特定复选框时,我希望此操作选择div中的所有其他复选框。这是我下面的代码,它不起作用

这是我的jQuery:

$("input[name=levelCheck]").change(function () {
if ($("input[name=levelCheck]:checked").val() == 'WTOPS') {
$("input[type='checkbox']").attr('checked', true);  
}
});

这是HTML:

<div id="Women">
<label> <input type="checkbox" name="level_desc[]" id="levelCheck" value="WOPEN"> Open </label>
<label> <input type="checkbox" name="level_desc[]" id="levelCheck" value="WPREPOPT"> Prep Opt </label>
<label> <input type="checkbox" name="level_desc[]" id="levelCheck" value="WTOPS"> TOPS </label>
</div>
4

7 回答 7

1

下面的脚本应该可以解决您拥有的标记,

演示

$(function() {
    $("input[name=level_desc\\[\\]]").change(function() {        
        if ($("input[name=level_desc\\[\\]]:checked").val() == 'WTOPS') {
            $("input[type='checkbox']").attr('checked', true);
        }
    });
});

正如迈克尔指出的那样,使用引号看起来更好,

$(function() {
    $("input[name='level_desc[]']").change(function() {        
        if ($("input[name='level_desc[]']:checked").val() == 'WTOPS') {
            $("input[type='checkbox']").attr('checked', true);
        }
    });
});
于 2012-04-27T19:44:13.290 回答
1

尝试定位特定的复选框 - 无需全部观看。

$("input[value=WTOPS]:not(:checked)").change(function () {
    $("input[type='checkbox']").attr('checked', 'checked');  
});

这专门针对未选中和更改时的 WTOPS 复选框。然后它会触发所有要检查的复选框。该问题没有谈到在未选中 WTOPS 框时将所有选项更改为未选中,但这是一种方法:

$("input[value=WTOPS]").change(function () {
    $("input[type='checkbox']").attr('checked', $("input[value=WTOPS]").val());  
});
于 2012-04-27T19:45:16.023 回答
0

$("input[name=levelCheck]:checked")应该是$("input#levelCheck:checked")

于 2012-04-27T19:43:35.180 回答
0

试试这个:

$("input#levelCheck").change(function () {
if ($("input#levelCheck:checked").val() == 'WTOPS') {
$("input[type='checkbox']").attr('checked', true);  
}
});
于 2012-04-27T19:44:19.390 回答
0

当您使用属性值选择器时,您应该将值用引号括起来 -

$("input[name='levelCheck']:checked");

注意包裹值的引号name='levelCheck'

于 2012-04-27T19:45:29.237 回答
0

您多次使用 ID 属性,并且需要将名称用单引号括起来。

HTML

<div id="Women">
<label> <input type="checkbox" name="level_desc[]" id="levelCheck1" value="WOPEN"> Open </label>
<label> <input type="checkbox" name="level_desc[]" id="levelCheck2" value="WPREPOPT"> Prep Opt </label>
<label> <input type="checkbox" name="level_desc[]" id="levelCheck3" value="WTOPS"> TOPS </label>
</div>​

JS

$("input[name='level_desc[]']").change(function () {
     if ($("input[name='level_desc[]']:checked").val() == 'WTOPS') {
         $("input[name='level_desc[]']").attr('checked', true);  
     }
});

演示
http://jsfiddle.net/ScMsX/

于 2012-04-27T19:46:47.083 回答
0

试试这个

$("input[type='checkbox']").change(function () {
    console.log($(this));
if ($(this).val() == 'WTOPS') {
$("input[type='checkbox']").attr('checked', true);  
}
});

检查这里http://jsfiddle.net/khqPj/

于 2012-04-27T19:47:31.527 回答