即使通过Javascript代码检查,如何触发复选框单击事件?

Posted

技术标签:

【中文标题】即使通过Javascript代码检查,如何触发复选框单击事件?【英文标题】:How to trigger checkbox click event even if it's checked through Javascript code? 【发布时间】:2011-06-14 10:24:19 【问题描述】:

我的页面中有很多复选框,并且有一个选中所有复选框的全选复选框。不知何故,我想模拟复选框的单击事件,即使它是通过全选按钮选中/取消选中的。我该怎么做?

【问题讨论】:

【参考方案1】:

您可以使用 jQuery .trigger() 方法。见http://api.jquery.com/trigger/

例如:

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

【讨论】:

你也可以直接调用$('#foo').click(),它实际上做了同样的事情。 如何用纯 javascript 做到这一点? 出现 trigger('click') 切换当前值。如果您只想设置它然后将checked 设置为 true 然后调用 triggerHandler(...) ***.com/questions/10268222/… 此类帖子在需要使用第 3 方时如何准确标记为正确?他没有要求 jQuery 解决方案。 @Wancieho 问题被标记为“jquery”。【参考方案2】:

获取检查状态

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

然后进行设置

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

【讨论】:

没有用attr 尝试过这个,因为我现在使用prop,但是这个方法只选中了这些框,它不会触发每个之后的点击事件【参考方案3】:

你也可以使用.change()函数

例如:

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

【讨论】:

当复选框更改是通过 Javascript 完成时,这对我不起作用。【参考方案4】:

你也可以用这个,希望你可以为他们服务。

$(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>

【讨论】:

【参考方案5】:

没有 gQuery

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

我在我的复选框上使用了某些类。

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】:

来自 jQuery 的触发函数可能是您的答案。

jQuery docs says: 当相应的事件发生时,任何附加了 .on() 或其快捷方法的事件处理程序都会被触发。但是,可以使用 .trigger() 方法手动触发它们。对 .trigger() 的调用以与用户自然触发事件相同的顺序执行处理程序

因此最好的单行解决方案应该是:

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

//or

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

【讨论】:

【参考方案7】:
  $("#gst_show>input").change(function()

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

  );

【讨论】:

你能解释一下你的代码吗

以上是关于即使通过Javascript代码检查,如何触发复选框单击事件?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript / Adob e DTM:跟踪复选框仅点击一次

如何在 PHP 发出的表格行中使用 JavaScript 检查所有复选框

即使未从 HTML 检查到 PHP,如何获取所有复选框变量?

如何检查用户是不是使用 jQuery/Javascript 从一组复选框中选中了至少一个复选框?

Javascript/jQuery/Datatables 对复选框触发的值求和

为啥触发复选框时“已检查”属性不正确? [复制]