我的表单中有两个选择字段。第一个是单选,另一个是多选。现在我想做的是根据单选中所选的选项,使用给定的数据选择多选中的选项。 为此,我在单选更改时触发 ajax 请求:
$.ajax({
type : 'POST',
url : '/Controller/getMultipleSelectIds',
data : {
singleSelectId: singleSelectId
},
success : function(data) {
var multipleSelectIds= JSON.parse(data);
$("#multipleSelectFieldId option:selected").prop("selected", false);
$("#multipleSelectFieldId option").each(function()
{
if ($(this).val() in multipleSelectIds) {
$(this).attr('selected','selected');
}
});
$("#multipleSelectFieldId").trigger("chosen:updated");
}
});
假设我在数据库中有这样的单选 Id 值:
array(
"ssId1" => array(1,2,4,5),
"ssId2" => array(1,3,5)
)
现在我选择单选中的第一个条目(“ssId1”),一切正常,这意味着多选会像它应该的那样被填充(带有给定值 1,2,4 和 5 的选项) )。 但是,当我再次将单选更改为另一个选项(“ssId2”)时,选择的选择仅显示选项 3(这是一个不是“ssId1”之一的值)。这一直持续到我在所选的多选中没有更多选项为止。
我已经检查过,隐藏的多选字段中的选项设置正确。所以现在的问题是:这是所选插件中的错误还是我做错了什么?
编辑
试图找到问题并为此使源选择可见。似乎 removeAttr
或 .prop("selected", false)
甚至 .attr('selected','selected') 有问题。当我在单选的两个选项之间切换时,仅标记了选项 3(蓝色背景),但所有 3 个选项在 html 代码中都具有 selected 属性。当我尝试通过 IE 11 中的 js/jquery 选择多选(必填)字段中的所有选项并提交表单时,我遇到了类似的问题 IE 表示没有选择任何选项。我做错了什么?
最佳答案
只需在所有句子中使用 prop()
方法,该方法可与 selected
等动态属性一起使用
看到你的 fiddle 修改没有问题:
https://jsfiddle.net/0aaxk2hz/3/
$(this).prop('selected', true); // add it
$(this).prop('selected', false); // remove it
关于jquery - removeAttr ("selected") 和 .attr ('selected' ,'selected' ) 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38264770/