javascript xóa thuộc tính "bị vô hiệu hóa" khỏi đầu vào html


100

Làm cách nào để xóa thuộc tính "bị vô hiệu hóa" khỏi đầu vào HTML bằng javascript?

<input id="edit" disabled>

tại onClick, tôi muốn thẻ đầu vào của mình không chứa thuộc tính "bị vô hiệu hóa".


có thể có trùng lặp Làm cách nào để tắt nút gửi khi bỏ chọn hộp kiểm? trùng lặp vì câu hỏi đó giải thích cách chuyển đổi, do đó, cách bật tắt như được hỏi ở đây.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Câu trả lời:


198

Đặt thuộc tính của phần tử disabledthành false:

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

Nếu bạn đang sử dụng jQuery, tương đương sẽ là:

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

Đối với một số trường đầu vào, thay vào đó bạn có thể truy cập chúng theo lớp:

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

documentVí dụ, nơi có thể được thay thế bằng một biểu mẫu, để chỉ tìm các phần tử bên trong biểu mẫu đó. Bạn cũng có thể sử dụng getElementsByTagName('input')để lấy tất cả các yếu tố đầu vào. Trong quá trình forlặp lại của mình , bạn sẽ phải kiểm tra điều đó inputs[i].type == 'text'.


1
vâng, nó hoạt động, nhưng tôi cần rất nhiều đầu vào để làm điều tương tự. Có lối tắt nào cho việc này không? cái này có khả thi không ('id1', 'id2', 'id3')?
Jam Ville,

1
có nó hoạt động! cảm ơn. nhân tiện, có một lỗi đánh máy tại geElementsBy. Tôi nghĩ rằng nó sẽ không làm việc :)
Jam Ville

34

Tại sao không chỉ xóa thuộc tính đó?

  1. vani JS: elem.removeAttribute('disabled')
  2. jQuery: elem.removeAttr('disabled')

1
jQuery("#success").removeAttr("disabled");- điều này làm việc cho tôi, cảm ơn!
aftamat4ik

vanilla js, removeAttribute không được hỗ trợ trong IE.
MarCrazyness

@MarCrazyness removeAttributedường như được hỗ trợ trong IE11. Nó được đánh dấu là unknowntôi có thể sử dụng, vì vậy tôi chỉ cần mở IE và kiểm tra xem nó có hoạt động không. Nó có.
Artur

2

Để đặt giá trị disabledthành false bằng cách sử dụng thuộc nametính của đầu vào:

document.myForm.myInputName.disabled = false;

1

Câu trả lời hay nhất chỉ là removeAttribute

element.removeAttribute("disabled");

trong firefox, như nowadys (2020), thuộc tính bị vô hiệu hóa đang hoạt động nhưng nó được đặt thành false. firefox chỉ đang tìm kiếm thuộc tính của chính nó. vì vậy giải pháp tốt nhất là thêm hoặc xóa nó cho firefox và điều này tất nhiên hoạt động cho tất cả các trình duyệt chính.
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>

mã của các câu trả lời trước dường như không hoạt động ở chế độ nội tuyến, nhưng có một cách giải quyết: phương pháp 3.

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


Hai điều này không làm việc cho tôi. method 1 <input type="text" onclick="this.disabled=false;" disabled> <hr> method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled>
Ambal Mani

1
Bạn đã phản đối điều này chỉ vì bạn không biết cách đọc câu trả lời đúng cách? Phương pháp 1 là từ phản hồi của David Hedlund, phương pháp 2 là từ phản hồi Dragos Rusu. Khi một phần tử bị vô hiệu hóa, "onclick" trên phần tử cụ thể đó sẽ không hoạt động nữa ở chế độ nội tuyến (tôi đã không thử nghiệm chế độ js bên ngoài). Cách duy nhất là mô phỏng "bị vô hiệu hóa" là một giải pháp nhỏ bằng cách sử dụng thuộc tính readonly và một số css. HOẶC tạo một phần tử "onclick" bên ngoài như một nút sẽ cho phép nhập bằng phương pháp 1 và 2 (tất nhiên sẽ hoạt động).
crisc82
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.