Сначала я должен отключить входы, а затем щелкнуть ссылку, чтобы включить их.
Это то, что я пробовал до сих пор, но это не работает.
HTML:
<input type="text" disabled="disabled" class="inputDisabled" value="">
JQuery:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').removeAttr("disabled")
});
Это показывает мне, true
а затем, false
но ничего не меняется для входов:
$("#edit").click(function(event){
alert('');
event.preventDefault();
alert($('.inputDisabled').attr('disabled'));
$('.inputDisabled').removeAttr("disabled");
alert($('.inputDisabled').attr('disabled'));
});
javascript
jquery
disabled-input
fatiDev
источник
источник
Ответы:
Всегда используйте
prop()
метод для включения или отключения элементов при использовании jQuery (см. Ниже, почему).В вашем случае это будет:
Пример jsFiddle здесь.
В принципе,
prop()
должны быть использованы при получении или настройки свойств (таких , какautoplay
,checked
,disabled
иrequired
среди прочих).Используя
removeAttr()
, вы полностью удаляете самdisabled
атрибут, аprop()
просто устанавливаете базовое логическое значение свойства в false.Хотя то, что вы хотите сделать, может быть сделано с помощью
attr()
/removeAttr()
, это не значит, что это должно быть сделано (и может вызвать странное / проблемное поведение, как в этом случае).Следующие выдержки (взятые из документации jQuery для prop () ) объясняют эти моменты более подробно:
источник
attr
противprop
для флажков: w3.org/TR/html5/forms.html#concept-input-checked-dirty для внутреннего JQuery , кроме как обойти это ограничение магии..prop()
был выполнен элемент, на который указываетthis
(this.prop("disabled", false)
но в обратном вызове он связывался с неправильным элементом, поэтому мне пришлось сделать общийvar that = this
обходной путь. Попытка поиграть с.apply()
/.call()
не работала; я не знаю почему. Дважды проверьте с,console.log(this)
если он установлен на нужный объект, непосредственно перед вызовомthis.prop(...)
disabled
свойства отключит элемент. Например, если<button disabled="false"></button>
кнопка не активируется, свойство должно быть удалено. Позвонив$('button').prop('disabled', false);
JQuery будет удалить свойство для вас, как я наблюдал в этом codepen (проверьте , чтобы увидеть удаление свойств).http://jsfiddle.net/ZwHfY/
источник
удалить отключенное использование атрибута,
и добавить отключенное использование атрибута,
Наслаждаться :)
источник
Используйте как это,
HTML:
JS:
источник
<a>
, на котором.prop('disabled', false)
не работает. Я поменял его на a<button>
и теперь он работаетЯ думаю, что вы пытаетесь переключить отключенное состояние, в случае, если вы должны использовать это (из этого вопроса ):
Вот рабочая скрипка.
источник
Мысль это вы можете легко настроить
источник
Это был единственный код, который работал для меня:
Обратите внимание, что это
removeProp
и нетremoveAttr
.Я использую
jQuery 2.1.3
здесь.источник
2018, без JQuery
Я знаю, что вопрос о JQuery: этот ответ только к вашему сведению.
источник
В этом вопросе конкретно упоминается jQuery, но если вы хотите выполнить это без jQuery, эквивалент в vanilla JavaScript:
источник
elem.removeAttr('disabled');
работает для меня