jQuery 自动多选另一个多选
jQuery multiselect another multiselect automatically
我有 2 个列表框。当我在第一个 listboxfor 中创建 selection 时,我需要它自动 select 后续 listboxfor 中的相应选项。如果我 select 个别项目(儿童)我得到我需要的结果。我遇到的问题是,如果我 select 两个项目(子项)我都没有在后续的 listboxfors 中得到两个项目 selected。下面是我的列表框。
@Html.ListBoxFor(m => m.MajorMultiSelects,
new MultiSelectList(Model.Majors, "Code", "Name"),
new { style = "/*display:block;*/" })
@Html.ListBoxFor(m => m.MultiSelectMajorGpas,
new MultiSelectList(Model.MajorGpas, "Code", "Name"),
new { style = "/*display:block;*/" })
下面是我用来制作 select 离子的 jquery。
$("#MajorMultiSelects").change(function() {
console.log("change");//MultiSelectMajorGpas
if ($('#MajorMultiSelects option:nth-child(1)').is(":selected")) {
console.log("1");
$("#MultiSelectMajorGpas option:eq(0)").prop("selected", true);
$("#MultiSelectMajorGpas option:eq(1)").prop("selected", false);
}
else if ($('#MajorMultiSelects option:nth-child(2)').is(":selected")) {
console.log("2");
$("#MultiSelectMajorGpas option:eq(0)").prop("selected", false);
$("#MultiSelectMajorGpas option:eq(1)").prop("selected", true);
}
//else if ($('#MajorMultiSelects option:nth-child(1)').is(":selected") && $('#MajorMultiSelects option:nth-child(2)').is(":selected")) {//This works opposite of what I need. If both items are not selected in listboxfor 1 then items in listboxfor 2 are both selected which is not what I want.
// console.log("1 & 2");
// $("#MultiSelectMajorGpas option:eq(0)").prop("selected", true);
// $("#MultiSelectMajorGpas option:eq(1)").prop("selected", true);
//}
//else {//This doesn't work at all.
// $("#MultiSelectMajorGpas option:eq(0)").prop("selected", true);
// $("#MultiSelectMajorGpas option:eq(1)").prop("selected", true);
//}
});
我的列表框看起来像:
<select multiple id="MajorMultiSelects">
<option value="Criminal Justice">Criminal Justice</option>
<option value="Computer Science">Computer Science</option>
</select>
<select multiple id="MultiSelectMajorGpas">
<option value="4">4</option>
<option value="3.45">3.45</option>
</select>
select returns 的 .val() 一个 selected 值的数组(以防多个 selected)所以你只需要将父 select 的值分配给子 select 的值,如下所示:
$("#MajorMultiSelects").change(function() {
let i = 0;
$(this).find('option').each(function() {
$('#MultiSelectMajorGpas option:eq('+i+')').prop("selected", $(this).is(':selected'));
i++;
});
});
我有 2 个列表框。当我在第一个 listboxfor 中创建 selection 时,我需要它自动 select 后续 listboxfor 中的相应选项。如果我 select 个别项目(儿童)我得到我需要的结果。我遇到的问题是,如果我 select 两个项目(子项)我都没有在后续的 listboxfors 中得到两个项目 selected。下面是我的列表框。
@Html.ListBoxFor(m => m.MajorMultiSelects,
new MultiSelectList(Model.Majors, "Code", "Name"),
new { style = "/*display:block;*/" })
@Html.ListBoxFor(m => m.MultiSelectMajorGpas,
new MultiSelectList(Model.MajorGpas, "Code", "Name"),
new { style = "/*display:block;*/" })
下面是我用来制作 select 离子的 jquery。
$("#MajorMultiSelects").change(function() {
console.log("change");//MultiSelectMajorGpas
if ($('#MajorMultiSelects option:nth-child(1)').is(":selected")) {
console.log("1");
$("#MultiSelectMajorGpas option:eq(0)").prop("selected", true);
$("#MultiSelectMajorGpas option:eq(1)").prop("selected", false);
}
else if ($('#MajorMultiSelects option:nth-child(2)').is(":selected")) {
console.log("2");
$("#MultiSelectMajorGpas option:eq(0)").prop("selected", false);
$("#MultiSelectMajorGpas option:eq(1)").prop("selected", true);
}
//else if ($('#MajorMultiSelects option:nth-child(1)').is(":selected") && $('#MajorMultiSelects option:nth-child(2)').is(":selected")) {//This works opposite of what I need. If both items are not selected in listboxfor 1 then items in listboxfor 2 are both selected which is not what I want.
// console.log("1 & 2");
// $("#MultiSelectMajorGpas option:eq(0)").prop("selected", true);
// $("#MultiSelectMajorGpas option:eq(1)").prop("selected", true);
//}
//else {//This doesn't work at all.
// $("#MultiSelectMajorGpas option:eq(0)").prop("selected", true);
// $("#MultiSelectMajorGpas option:eq(1)").prop("selected", true);
//}
});
我的列表框看起来像:
<select multiple id="MajorMultiSelects">
<option value="Criminal Justice">Criminal Justice</option>
<option value="Computer Science">Computer Science</option>
</select>
<select multiple id="MultiSelectMajorGpas">
<option value="4">4</option>
<option value="3.45">3.45</option>
</select>
select returns 的 .val() 一个 selected 值的数组(以防多个 selected)所以你只需要将父 select 的值分配给子 select 的值,如下所示:
$("#MajorMultiSelects").change(function() {
let i = 0;
$(this).find('option').each(function() {
$('#MultiSelectMajorGpas option:eq('+i+')').prop("selected", $(this).is(':selected'));
i++;
});
});