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".


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'.


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')

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;

1

Jawaban terbaik hanyalah removeAttribute

element.removeAttribute("disabled");

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/


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.