[英]Change checkbox value doesnt fire the change event in Jquery
我有一个复选框,我将其标记为已选中,但是它不会触发on change功能。 笔记没有出现。
My code:
$('#checkbox1').prop("checked", true);
$('#checkbox1').change(function(){
if ($(this).is(':checked'))
$('#s-note').show();
else
$('#s-note').hide();
});
如果您将注释设置为默认隐藏,并使用基于id
的选择器进行处理,如下所示:
#s-note { display:none; }
然后,您的代码将无法显示它,因为它还使用了基于id
的选择器,并且不会比已经生效的选择器更具体。
取而代之的是,您必须使用一个选择器将注释默认为隐藏,该选择器的特定性不如您以后用来显示/隐藏它的id
选择器。 那将是一堂课。
同样,至关重要的是在触发事件之前设置事件处理程序,以便在事件发生时已经注册了事件处理程序。
现在,对于您的需求,您实际上不需要change
事件, click
就可以了。 最后,为确保正确触发该事件,请使用JQuery的.trigger()
方法来使事件运动。
// Make sure you set up the callback first $('#checkbox1').on("click", function(){ if ($(this).is(":checked")) $('#s-note').show(); else $('#s-note').hide(); }); // Then just trigger the event $('#checkbox1').trigger("click");
.hide { display:none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="checkbox" id="checkbox1">Test <div id="s-note" class="hide">Special</div>
您是否希望onchange在无需用户干预的情况下能够启动?
您的问题是,在设置处理程序之前先设置检查状态,这样如果触发更改,就不会抓住它。 您真正的问题是用JavaScript设置属性不会触发更改事件。 因此,您需要手动触发更改事件。
$('#checkbox1')
.prop("checked", true) // set it to checked
.on("change", function() { // bind change event
$('#s-note').toggle($(this).is(':checked')); // toggle visibility
}).trigger("change"); //trigger that you need the change to run
我希望此代码段对您有所帮助
Approach 1
$('#idcheckbox').on('change', function() {
if($(this).is(':checked')) {
alert('checked');
} else {
alert('default ');
}
});
Approach 2
$('input[type=checkbox]').on('change', function() {
if($(this).is(':checked')) {
alert('checked');
} else {
alert('default ');
}
});
我在.net mvc中运行了您的代码,它运行正常。
这是它隐藏或显示div元素的复选框相同的ID。
<input type="checkbox" id="checkbox1" value=" " />
<div id="s-note" style="display: none">
<label>Showing</label>
</div>
您要显示什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.