javascript menghapus atribut "nonaktif" dari masukan html

103

Bagaimana cara menghapus atribut "nonaktif" dari input HTML menggunakan javascript?

<input id="edit" disabled>

di onClick Saya ingin tag masukan saya tidak terdiri dari atribut "nonaktif".

Jam Ville
sumber
kemungkinan duplikat dari Bagaimana cara menonaktifkan tombol kirim jika kotak centang tidak dicentang? duplikat karena pertanyaan itu menjelaskan cara beralih, oleh karena itu cara mengaktifkan dan menonaktifkan seperti yang ditanyakan di sini.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Jawaban:

201

Setel disabledproperti elemen ke false:

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

Jika Anda menggunakan jQuery, persamaannya adalah:

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

Untuk beberapa bidang masukan, Anda dapat mengaksesnya berdasarkan kelas:

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

Di mana documentbisa diganti dengan formulir, misalnya, untuk menemukan hanya elemen di dalam formulir itu. Anda juga bisa menggunakan getElementsByTagName('input')untuk mendapatkan semua elemen masukan. Dalam foriterasi Anda, Anda harus memeriksanya inputs[i].type == 'text'.

David Hedlund
sumber
1
ya itu berhasil, tapi saya punya banyak masukan perlu melakukan hal yang sama. Apakah ada jalan pintas untuk ini? apakah ini mungkin ('id1', 'id2', 'id3')?
Jam Ville
1
ya, berhasil! Terima kasih. omong-omong, ada kesalahan ketik di geElementsBy. Saya pikir itu tidak akan berhasil :)
Jam Ville
34

Mengapa tidak menghapus atribut itu saja?

  1. vanilla JS: elem.removeAttribute('disabled')
  2. jQuery: elem.removeAttr('disabled')
Dragos Rusu
sumber
1
jQuery("#success").removeAttr("disabled");- ini berhasil untukku, terima kasih!
aftamat4ik
vanilla js, removeAttribute tidak didukung di IE.
MarCrazyness
@MarCrazyness removeAttributetampaknya didukung di IE11. Itu ditandai sebagai unknownpada dapat saya gunakan, jadi saya baru saja membuka IE dan memeriksa apakah itu berfungsi. Memang.
Artur
2

Untuk menyetel disabledke false menggunakan nameproperti input:

document.myForm.myInputName.disabled = false;
Henry Hedden
sumber
1

Jawaban terbaik hanyalah removeAttribute

element.removeAttribute("disabled");
Harshit Nigam
sumber
di firefox, as nowadys (2020), atribut yang dinonaktifkan aktif meskipun disetel ke false. firefox hanya mencari atribut itu sendiri. jadi solusi terbaik adalah menambahkan atau menghapusnya untuk firefox, dan ini tentu saja berfungsi untuk semua browser utama.
Raffael Meier
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>

kode jawaban sebelumnya tampaknya tidak berfungsi dalam mode sebaris, tetapi ada solusi: metode 3.

lihat demo https://jsfiddle.net/eliz82/xqzccdfg/

crisc82.dll
sumber
Dua ini tidak bekerja untukku. method 1 <input type="text" onclick="this.disabled=false;" disabled> <hr> method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled>
Ambal Mani
1
Anda tidak menyukai ini hanya karena Anda tidak tahu cara membaca jawaban dengan benar? Metode 1 dari respons David Hedlund, metode 2 dari respons Dragos Rusu. Setelah elemen dinonaktifkan, "onclick" pada elemen tertentu tidak akan berfungsi lagi dalam mode sebaris (saya tidak menguji mode js eksternal). Satu-satunya cara untuk mensimulasikan "nonaktif" adalah sedikit solusi menggunakan atribut readonly dan beberapa css. ATAU buat elemen "onclick" eksternal seperti tombol yang akan mengaktifkan input menggunakan metode 1 dan 2 (yang tentu saja akan berfungsi).
crisc82