removeAttr(“selected”)和.attr('selected','selected')无法正常工作

时间:2016-07-08 10:47:48

标签: jquery prop

我的表单中有两个选择字段。第一个是单选,另一个是多选。现在我想做的是根据单选中选择的选项,在给定数据的多选中选择选项。 为此,我在更改单选时触发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表示没有选择选项时,我遇到了类似的问题。我做错了什么?

1 个答案:

答案 0 :(得分:4)

只需在所有句子中使用prop()方法,该方法适用于动态属性,例如selected

看到你的小提琴修改没有问题:

https://jsfiddle.net/0aaxk2hz/3/

$(this).prop('selected', true); // add it
$(this).prop('selected', false); // remove it