我的表单中有两个选择字段。第一个是单选,另一个是多选。现在我想做的是根据单选中选择的选项,在给定数据的多选中选择选项。 为此,我在更改单选时触发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”)时,selected-select只显示选项3(这是一个不是“ssId1”之一的值)。这一直持续到我在所选择的多选中没有更多选项。
我已经检查过,隐藏的多选字段中的选项设置正确。所以现在问题是:这是选择插件中的错误还是我做错了什么?
修改
试图找到问题,并为此使源选择可见。似乎removeAttr
或.prop("selected", false)
或甚至.attr('已选中','已选中')存在问题。当我在单选的两个选项之间切换时,只标记选项3(蓝色背景),但所有3个选项都在html代码中具有selected属性。当我尝试通过IE 11中的js / jquery选择多选(必需)字段中的所有选项并提交表单IE表示没有选择选项时,我遇到了类似的问题。我做错了什么?
答案 0 :(得分:4)
只需在所有句子中使用prop()
方法,该方法适用于动态属性,例如selected
看到你的小提琴修改没有问题:
https://jsfiddle.net/0aaxk2hz/3/
$(this).prop('selected', true); // add it
$(this).prop('selected', false); // remove it