Làm cách nào để đặt lại tất cả các hộp kiểm bằng jQuery hoặc JS thuần túy?


Câu trả lời:


145

Nếu ý của bạn là cách xóa trạng thái 'đã chọn' khỏi tất cả các hộp kiểm:

$('input:checkbox').removeAttr('checked');

Tập lệnh này đang chuyển đổi trạng thái của các hộp kiểm. Không chắc liệu mình có làm sai điều gì không
Sundeep

38
Lưu ý rằng trong jQuery v1.6 trở lên, bạn nên sử dụng .prop ( 'kiểm tra', false) thay vì để tương thích qua trình duyệt lớn hơn - xem api.jquery.com/prop
Henry C

Tôi đã sử dụng điều này để đặt lại biểu mẫu trước khi mở hộp thoại mới. Sau đó, tôi cần đặt một hộp kiểm 'đã chọn' và điều này không hoạt động. Khi tôi nhìn vào mã được tạo, nó được 'kiểm tra' nhưng trên trang của tôi nó không phải là $ ('input: checkbox'). RemoveAttr ('đã kiểm tra'); $ ('input [value =' + val + ']'). attr ('đã kiểm tra', true);
Gayane

1
Đây hiện là một câu trả lời lỗi thời - hãy xem: stackoverflow.com/questions/17420534/…
raison

47

Nếu bạn muốn sử dụng tính năng đặt lại của biểu mẫu, bạn nên sử dụng tính năng này:

$('input[type=checkbox]').prop('checked',true); 

HOẶC LÀ

$('input[type=checkbox]').prop('checked',false);

Có vẻ như removeAttr()không thể được đặt lại trước form.reset().


1
Mặc dù câu trả lời được chấp nhận cũng hoạt động, nhưng tôi thấy đây là cách tốt nhất để làm điều đó. Xin vui lòng, nếu bạn đang đọc nó, hãy xem xét sử dụng cách này, vì nó là phương pháp hay nhất.
rafaelmorais

13

Câu trả lời trên không phù hợp với tôi -

Sau đây đã hoạt động

$('input[type=checkbox]').each(function() 
{ 
        this.checked = false; 
}); 

Điều này đảm bảo rằng tất cả các hộp kiểm được bỏ chọn.


11

Trong một số trường hợp, hộp kiểm có thể được chọn theo mặc định. Nếu bạn muốn khôi phục lựa chọn mặc định thay vì đặt là không được chọn, hãy so sánh thuộc defaultCheckedtính.

$(':checkbox').each(function(i,item){ 
        this.checked = item.defaultChecked; 
}); 

11

Tôi đã sử dụng cái này trước đây:

$('input[type=checkbox]').prop('checked', false);

có vẻ như .attr và .removeAttr không hoạt động trong một số trường hợp.

chỉnh sửa: Lưu ý rằng trong jQuery v1.6 trở lên, bạn nên sử dụng .prop('checked', false)thay thế để có khả năng tương thích nhiều trình duyệt hơn - xem https://api.jquery.com/prop

Nhận xét ở đây: Làm thế nào để đặt lại tất cả các hộp kiểm bằng jQuery hoặc JS thuần túy?


7

Javascript

var clist = document.getElementsByTagName("input");
for (var i = 0; i < clist.length; ++i) { clist[i].checked = false; }

jQuery

$('input:checkbox').each(function() { this.checked = false; });

Để làm ngược lại, hãy xem: Chọn Tất cả Hộp kiểm Theo ID / Lớp


4
 $(":checkbox:checked").each(function () {

 this.click(); 
});

để bỏ chọn hộp kiểm, hãy xoay logic của bạn để làm ngược lại


3

Bạn có thể lựa chọn div hoặc một phần trang của bạn có thể chọn hộp kiểm và hộp kiểm nào không. Tôi đã gặp tình huống trong đó tôi có hai biểu mẫu trong trang của mình và một biểu mẫu có các giá trị được điền sẵn (để cập nhật) và biểu mẫu khác cần được điền mới.

$('#newFormId input[type=checkbox]').attr('checked',false);

điều này sẽ chỉ làm cho các hộp kiểm ở dạng có id newFormId là không được chọn.


2

Như đã nói trong câu trả lời của Tatu Ulmanen bằng cách sử dụng kịch bản làm theo sẽ thực hiện công việc

$('input:checkbox').removeAttr('checked');

Nhưng, như bình luận Blakomen của nói, sau khi phiên bản 1.6 nó tốt hơn để sử dụng jQuery.prop()thay vì

Lưu ý rằng trong jQuery v1.6 trở lên, bạn nên sử dụng .prop ('đã kiểm tra', sai) để thay thế cho khả năng tương thích trên nhiều trình duyệt

$('input:checkbox').prop('checked', false);

Hãy cẩn thận khi sử dụng jQuery.each()nó có thể gây ra các vấn đề về hiệu suất. (ngoài ra, hãy tránh jQuery.find()trong những trường hợp đó. Hãy sử dụng từng cái thay thế)

$('input[type=checkbox]').each(function() 
{ 
    $(this).prop('checked', false); 
});

1

Tôi đã sử dụng một cái gì đó như thế

$(yourSelector).find('input:checkbox').removeAttr('checked');

1
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container check">
<button class="btn">click</button>
  <input type="checkbox" name="vehicle" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle" value="Car">I have a car<br>
<input type="checkbox" name="vehicle" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle" value="Car">I have a car<br>
</div>
<script>
$('.btn').click(function() {

$('input[type=checkbox]').each(function() 
{ 
        this.checked = false; 
}); 
})
</script>
</body>
</html>

3
Câu trả lời chỉ có mã không được khuyến khích. Bạn thực sự muốn bao gồm một số lời giải thích.
GhostCat
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.