javascript видаляє атрибут “disabled” із вводу html


101

Як я можу видалити атрибут "disabled" із вводу HTML за допомогою JavaScript?

<input id="edit" disabled>

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


можливий дублікат Як відключити кнопку надсилання, коли прапорець знято? дублікат, оскільки це питання пояснює, як перемикати, а отже, як увімкнути та вимкнути, як задано тут.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Відповіді:


199

Встановіть для 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 є помилка друку. Я думав, що це не спрацює :)
Jam Ville

34

Чому б просто не видалити цей атрибут?

  1. ванільний JS: elem.removeAttribute('disabled')
  2. jQuery: elem.removeAttr('disabled')

1
jQuery("#success").removeAttr("disabled");- це працює для мене, дякую!
aftamat4ik

vanilla js, removeAttribute не підтримується в IE.
MarCrazyness

removeAttributeЗдається, @MarCrazyness підтримується в IE11. Він позначений як " unknownя можу використовувати", тому я просто відкрив IE і перевірив, чи працює. Це робить.
Артур

2

Щоб встановити значення disabledfalse за допомогою nameвластивості вводу:

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.