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/


Эти двое не работают для меня. 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.