javascript удалить атрибут «отключен» из ввода html

103

Как я могу удалить атрибут «disabled» из ввода HTML с помощью javascript?

<input id="edit" disabled>

в onClick я хочу, чтобы мой тег ввода не состоял из атрибута disabled.

Джем Вилле
источник
возможный дубликат Как отключить кнопку отправки, когда флажок снят? дублировать, потому что этот вопрос объясняет, как переключать, поэтому как включать и отключать, как здесь задается.
Чиро Сантилли 郝海东 冠状 病 六四 事件

Ответы:

201

Установите для disabledсвойства элемента значение false:

document.getElementById('my-input-id').disabled = false;

Если вы используете jQuery, эквивалент будет:

$('#my-input-id').prop('disabled', false);

Для нескольких полей ввода вы можете получить доступ к ним по классу:

var inputs = document.getElementsByClassName('my-input-class');
for(var i = 0; i < inputs.length; i++) {
    inputs[i].disabled = false;
}

Где documentможно заменить формой, например, чтобы найти только элементы внутри этой формы. Вы также можете использовать getElementsByTagName('input')для получения всех элементов ввода. В вашей forитерации вам нужно будет это проверить inputs[i].type == 'text'.

Дэвид Хедлунд
источник
1
да, это работает, но мне нужно было сделать то же самое. Есть ли какой-нибудь ярлык для этого? возможно ли это ('id1', 'id2', 'id3')?
Jam Ville
1
Да, это работает! Спасибо. Кстати, на geElementsBy есть опечатка. Я думал, не получится :)
Джем Вилле
34

Почему бы просто не удалить этот атрибут?

  1. ванильный JS: elem.removeAttribute('disabled')
  2. jQuery: elem.removeAttr('disabled')
Драгош Русу
источник
1
jQuery("#success").removeAttr("disabled");- у меня работает, спасибо!
aftamat4ik
vanilla js, removeAttribute не поддерживается в IE.
MarCrazyness
@MarCrazyness, removeAttributeпохоже, поддерживается в IE11. Он помечен как « unknownМогу ли я использовать», поэтому я просто открыл IE и проверил, работает ли он. Оно делает.
Артур
2

Чтобы установить disabledзначение false, используя nameсвойство input:

document.myForm.myInputName.disabled = false;
Генри Хедден
источник
1

Лучший ответ - просто removeAttribute

element.removeAttribute("disabled");
Харшит Нигам
источник
в firefox, как и сейчас (2020), атрибут disabled активен, хотя для него установлено значение false. firefox просто ищет сам атрибут. поэтому лучшим решением будет добавить или удалить его для firefox, и это, конечно, работает для всех основных браузеров.
Рафаэль Мейер,
0
method 1 <input type="text" onclick="this.disabled=false;" disabled>
<hr>
method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled>
<hr>
method 3 <input type="text" onclick="this.removeAttribute('readonly');" readonly>

Код из предыдущих ответов, похоже, не работает во встроенном режиме, но есть обходной путь: метод 3.

см. демонстрацию https://jsfiddle.net/eliz82/xqzccdfg/

crisc82
источник
Эти двое не работают для меня. method 1 <input type="text" onclick="this.disabled=false;" disabled> <hr> method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled>
Ambal Mani
1
Вы проголосовали против этого только потому, что не умеете правильно читать ответ? Метод 1 взят из ответа Дэвида Хедлунда, метод 2 из ответа Драгоса Русу. Как только элемент отключен, «onclick» на этом конкретном элементе больше не будет работать во встроенном режиме (я не тестировал внешний режим js). Единственный способ смоделировать «отключено» - это небольшое обходное решение с использованием атрибута readonly и некоторого CSS. ИЛИ создайте внешний элемент «onclick», например кнопку, которая будет разрешать ввод с использованием методов 1 и 2 (это, конечно, будет работать).
crisc82