RemoveAttr() не удаляет атрибут "disabled" в IE
var disableSelection = function(){
$("#elementId").attr("disabled","disabled");
};
var enableSelection = function(){
$("#elementId").removeAttr("disabled");
};
У меня следующие требования:
- отключить элемент SELECT, чтобы запретить пользователям выбирать параметры
- отключен. Элемент SELECT имеет уже выбранный элемент OPTION.
- on submit event enable отключить элемент SELECT, чтобы сохранить выбранное значение
Добавление атрибута "отключено" хорошо работает для IE.
Тем не менее, когда я пытаюсь удалить атрибут с помощью метода jQuery revomeAttr(), вместо удаления атрибута:
- добавляет атрибут "disabled" к ранее включенному элементу SELECT
- метод не удаляет атрибут "disabled"
Ответы
Ответ 1
Используйте .prop
вместо .attr
повлиять на состояние отключенного элемента:
var disableSelection = function(){
$("#elementId").prop("disabled", true);
};
var enableSelection = function(){
$("#elementId").prop("disabled", false);
};
Для получения дополнительной информации см. .prop() vs .attr().
Ответ 2
Вместо этого вы можете использовать removeProp('disabled')
. Это работало для меня, а removeAttr('disabled')
не было.
Ответ 3
JQuery Docs говорит о .removeProp():
Примечание. Не используйте этот метод для удаления собственных свойств, таких как отмеченные, отключенные или выбранные. Это полностью удалит свойство и, после удаления, снова не будет добавлено к элементу. Используйте .prop(), чтобы вместо этого установить эти свойствa > в false.
Дополнительные примечания:
В Internet Explorer до версии 9 использование .prop() для установки свойства DOM > для чего-либо, кроме простого примитивного значения (число, строка или > логическое), может вызвать утечку памяти, если свойство не удалено (используя > .removeProp()) перед удалением элемента DOM из документа. Чтобы безопасно > установить значения на объектах DOM без утечек памяти, используйте .data().