需要根据模型数据中的字符串设置复选框

Need to set checkboxes as checked based on string from model data

本文关键字:字符串 设置 复选框 数据 模型      更新时间:2023-09-26

我试图根据存储在模型中的逗号分隔的字符串设置选中的属性。这个问题是选中的属性不存在。有人知道我做错了什么吗?以下是我的文件:

控制器返回的数据…

V1P01,V1P02,V1P03

视图代码。

$(document).ready(function () {
    var array = "@Model.IncidentVehicle.VA_Sub1VehicleDamage".split(',');
    for (var i in array)
        $("[name=myCheckboxName][value=" + $.trim(array[i]) + "]").attr('checked', true);
    });
<div class="carCBsPassenger">
    <input name="V1P01" id="V1P01" type="checkbox" value="V1P01" style="border: none;" />
    <input name="V1P02" id="V1P02" type="checkbox" value="V1P02" style="border: none;" />
    <input name="V1P03" id="V1P03" type="checkbox" value="V1P03" style="border: none;" />
    <input name="V1P04" id="V1P04" type="checkbox" value="V1P04" style="border: none;" />
    <input name="V1P05" id="V1P05" type="checkbox" value="V1P05" style="border: none;" />
    <input name="V1P06" id="V1P06" type="checkbox" value="V1P06" style="border: none;" />
    <input name="V1P07" id="V1P07" type="checkbox" value="V1P07" style="border: none;" />
    <input name="V1P08" id="V1P08" type="checkbox" value="V1P08" style="border: none;" />
    <input name="V1P09" id="V1P09" type="checkbox" value="V1P09" style="border: none;" />
    <input name="V1P10" id="V1P10" type="checkbox" value="V1P10" style="border: none;" />
    <input name="V1P11" id="V1P11" type="checkbox" value="V1P11" style="border: none;" />
    <input name="V1P12" id="V1P12" type="checkbox" value="V1P12" style="border: none;" />
    <input name="V1P13" id="V1P13" type="checkbox" value="V1P13" style="border: none;" />
    <input name="V1P14" id="V1P14" type="checkbox" value="V1P14" style="border: none;" />
</div>

没有一个复选框的name属性为myCheckboxName。此外,您缺少一些开始大括号,并且在末尾有一个结束大括号,导致语法错误。试试这个:

var array = "V1P01,V1P02,V1P03".split(',');
for (var i = 0; i < array.length; i++) {
    $("#" + $.trim(array[i])).attr('checked', true);
};

例子小提琴


同样,假设来自服务器的列表格式没有改变,您可以通过替换字符串来通过它们的id选择元素来删除循环:

var selector = '#' + array.replace(/',/g, ',#');
$(selector).attr('checked', true);

例子小提琴

您应该使用.prop()方法。我还为jQuery .each()切换了for循环。

var array = ['V1P01', 'V1P02', 'V1P03'];
$.each(array, function(key, val){
    $('input[value="' + $.trim(array[key]) + '"]').prop('checked', true);
});

希望这对你有帮助!

您应该更改选择器并使用prop()方法。或者在value中使用单引号。

$(".carCBsPassenger input[value='" + $.trim(array[i]) + "']").prop('checked', true);