【问题标题】:Matching Checkboxes By Value按值匹配复选框
【发布时间】:2013-01-24 21:58:04
【问题描述】:

我有一个复选框列表,我正在尝试根据文本框的值来检查它们。

var codes = $('#textbox1').val().split(','); // this contains [ "Dept1" and "Dept2" ]
var allDeptChecks = $('.Dept-help input:checkbox'); // this contains all of my checkboxes
allDeptChecks.attr('checked', false);
$.each(codes, function() {
    var chkDept = allDeptChecks.find("[value='"+this+"']"); // no matter what I try, this selector matches 0 elements
    chkDept.attr('checked', true);
}); 

<li title="Dept 1">
    <input type="checkbox" name="chkDept1" value="Dept1">
    <span>Dept1</span>
    <span>Description Numero Uno</span>
</li>
<li title="Dept 2">
    <input type="checkbox" name="chkDept2" value="Dept2">
    <span>Dept2</span>
    <span>Description Numero Dos</span>
</li>

这不应该工作吗?

编辑: Here's a JSFiddle

【问题讨论】:

  • 你能提供一个jsFiddle吗?

标签: javascript jquery asp.net checkbox


【解决方案1】:

给你

$('#lnkGo').click(function () {
    var codes = $('#textbox1').val().split(','); // this contains [ "Dept1" and "Dept2" ]
    var allDeptChecks = $('input:checkbox'); // this contains all of my checkboxes
    allDeptChecks.prop('checked', false);
    $.each(codes, function () {
        var chkDept = allDeptChecks.filter("input[value='" + this + "']"); // no matter what I try, this selector matches 0 elements
        chkDept.prop('checked', true);
    });
});

【讨论】:

  • 将 .find 更改为 .filter。我还将 chkDept.attr('checked', true) 更改为 chkDept.attr('checked', 'checked') 并且为了理智起见,我在您的过滤器选择器中添加了 'input'。
  • 我更新了代码以使用 prop 而不是 attr 因为您第二次单击 go 它会删除复选框。
  • 谢谢,我已经written a blog post on this。使用 prop 而不是 attr 确实有所作为 - 后者不起作用。
【解决方案2】:

试试这个:

$.each(codes, function(i, value) {
$("input[value='"+value+"']").prop('checked', true);    
});  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多