Làm thế nào để kích hoạt sự kiện nhấp vào hộp kiểm ngay cả khi nó được kiểm tra thông qua mã Javascript?


80

Tôi có nhiều hộp kiểm trong trang của mình và có một hộp kiểm chọn tất cả sẽ kiểm tra tất cả các hộp kiểm. Bằng cách nào đó, tôi muốn mô phỏng sự kiện nhấp chuột đó của hộp kiểm ngay cả khi nó được chọn / bỏ chọn thông qua nút chọn tất cả. Tôi làm nó như thế nào?

Câu trả lời:


117

Bạn có thể sử dụng .trigger()phương thức jQuery . Xem http://api.jquery.com/trigger/

Ví dụ:

$('#foo').trigger('click');

13
Bạn cũng có thể chỉ cần gọi điện $('#foo').click(), thao tác này có hiệu quả tương tự.
Kevin Babcock

2
Làm cách nào để thực hiện điều này với JavaScript thuần túy?
Paul

6
xuất hiện trigger('click')chuyển đổi giá trị hiện tại. Nếu bạn muốn chỉ cần đặt sau đó nó thiết lập checkedlà true sau đó gọi triggerHandler (...) stackoverflow.com/questions/10268222/...
rogerdpack

1
Chính xác thì làm thế nào để các bài đăng như thế này được đánh dấu là đúng khi họ yêu cầu sử dụng bên thứ 3? Anh ấy không yêu cầu giải pháp jQuery.
Wancieho

@Wancieho Câu hỏi được gắn thẻ 'jquery'.
Mark Robinson

15

Nhận tình trạng séc

var checked = $("#selectall").is(":checked");

Sau đó để thiết lập

$("input:checkbox").attr("checked",checked);

9
Không cố gắng này với attrkhi tôi sử dụng propngày nay, nhưng phương pháp này chỉ kiểm tra các hộp, nó không cháy sự kiện click cho mỗi sau đó
EvilDr

9

Bạn cũng có thể sử dụng .change()chức năng

Ví dụ:

$('form input[type=checkbox]').change(function() { console.log('hello') });

Điều này không hoạt động đối với tôi khi thay đổi hộp kiểm được thực hiện thông qua Javascript.
Flimm

6

không có gQuery

document.getElementById ('your_box'). onclick ();

Tôi đã sử dụng một số lớp nhất định trên các hộp kiểm của mình.

var x = document.getElementsByClassName("box_class");
var i;
for (i = 0; i < x.length; i++) {
    if(x[i].checked) x[i].checked = false;
    else x[i].checked = true;
    x[i].onclick();
   }

6

Bạn cũng có thể sử dụng cái này, tôi hy vọng bạn có thể phục vụ họ.

$(function(){
  $('#elements input[type="checkbox"]').prop("checked", true).trigger("change");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<div id="elements">
  <input type="checkbox" id="item-1" value="1"> Item 1 <br />
  <input type="checkbox" id="item-2" value="2" disabled> Item 2 <br /> 
  <input type="checkbox" id="item-3" value="3" disabled> Item 3 <br />
  <input type="checkbox" id="item-4" value="4" disabled> Item 4 <br />
  <input type="checkbox" id="item-5" value="5"> Item 5
</div>


4

Hàm kích hoạt từ jQuery có thể là câu trả lời của bạn.

jQuery docs cho biết: Bất kỳ trình xử lý sự kiện nào được đính kèm với .on () hoặc một trong các phương thức tắt của nó sẽ được kích hoạt khi sự kiện tương ứng xảy ra. Tuy nhiên, chúng có thể được kích hoạt theo cách thủ công với phương thức .trigger (). Lệnh gọi tới .trigger () thực thi các trình xử lý theo thứ tự giống như chúng nếu sự kiện được kích hoạt tự nhiên bởi người dùng

Vì vậy, giải pháp một dòng tốt nhất nên là:

$('.selector_class').trigger('click');

//or

$('#foo').click();

1
  $("#gst_show>input").change(function(){

    var checked = $(this).is(":checked");
    if($("#gst_show>input:checkbox").attr("checked",checked)){
      alert('Checked Successfully');
    }

  });

2
BẠN CÓ THỂ GIẢI THÍCH MÃ CỦA BẠN
Yilmaz
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.