如何使用 jQuery 处理复选框的更改?
Posted
技术标签:
【中文标题】如何使用 jQuery 处理复选框的更改?【英文标题】:How to handle change of checkbox using jQuery? 【发布时间】:2012-02-29 02:34:12 【问题描述】:我有一些代码
<input type="checkbox" id="chk" value="value" />
<label for="chk">Value </label>
<br/>
<input type="button" id="But1" value="set value" />
<br />
<input type="button" id="But2" value="read checked" />
$(document).ready(function ()
console.log("Ready ...");
registerHandlers();
function registerHandlers()
$('#But1').click(function ()
$('#chk').prop('checked', !$('#chk').is(':checked'));
);
$('#But2').click(function ()
var chk1 = $('#chk').is(':checked');
console.log("Value : " + chk1);
);
$('input[type="checkbox"]').change(function ()
var name = $(this).val();
var check = $(this).prop('checked');
console.log("Change: " + name + " to " + check);
);
);
我需要将处理程序更改为选中的所有复选框。
[更新]
有一个复选框和几个按钮。 每个按钮都可以更改复选框。 如何捕捉更改复选框的事件?
[更新]
我需要在此示例中处理更改复选框jsfiddle。 当我单击该框时,未显示消息“确定”按钮。
【问题讨论】:
我不太明白你的问题?更改复选框时应该发生什么? 有什么问题?这段代码似乎工作得很好 能否请您重新表述您的问题?你已经有了 $('input[type="checkbox"]').change 处理程序,怎么了? 如果更改按钮复选框更改事件不会发生 仅供参考;$('#chk').prop('checked')
返回一个布尔值而不是属性的值。见api.jquery.com/prop
【参考方案1】:
使用:checkbox
选择器:
$(':checkbox').change(function()
// do stuff here. It will fire on any checkbox change
);
代码:http://jsfiddle.net/s6fe9/
【讨论】:
...和this.checked
对于确定复选框是否被选中非常有用。
是否可以注册多个处理程序?
2015年还推荐这个吗?
好像API没变,所以是的。
这需要在 $(document).ready(function ()... 对我来说,对吗?【参考方案2】:
希望,这会有所帮助。
$('input[type=checkbox]').change(function ()
if ($(this).prop("checked"))
//do the stuff that you would do when 'checked'
return;
//Here do the stuff you want to do when 'unchecked'
);
【讨论】:
从 jQuery 1.6 开始,最好使用 $(this).prop("checked"),因为它会随着复选框的实际状态而动态变化。 .attr("checked") 不正确,因为它不会随着用户点击而更新。我确认@hrabinowitz 的评论。【参考方案3】:你也可以使用字段的ID
$('#checkbox1').change(function()
if($(this).is(":checked"))
//'checked' event code
return;
//'unchecked' event code
);
【讨论】:
【参考方案4】:$('#myForm').on('change', 'input[type=checkbox]', function()
this.checked ? this.value = 'apple' : this.value = 'pineapple';
);
【讨论】:
请详细说明您的答案:纯代码解决方案更有可能被删除,因为它们不解释,只需修复(如果有的话)。 对不起@rekaszeru 我下次会做得更好【参考方案5】:$("input[type=checkbox]").on("change", function()
if (this.checked)
//do your stuff
);
【讨论】:
请在发布前检查您自己的代码作品。您的选择器存在明显问题... live() 已弃用。【参考方案6】:在我看来 removeProp 在 Chrome 中无法正常工作: jsfiddle
$('#badBut1').click(function ()
checkit('Before');
if( $('#chk').prop('checked') )
$('#chk').removeProp('checked');
else
$('#chk').prop('checked', true);
checkit('After');
);
$('#But1').click(function ()
checkit('Before');
if( $('#chk').prop('checked') )
$('#chk').removeClass('checked').prop('checked',false);
else
$('#chk').addClass('checked').prop('checked', true);
checkit('After');
);
$('#But2').click(function ()
var chk1 = $('#chk').is(':checked');
console.log("Value : " + chk1);
);
$('#chk').on( 'change',function ()
checkit('Result');
);
function checkit(moment)
var chk1 = $('#chk').is(':checked');
console.log(moment+", value = " + chk1);
;
【讨论】:
如何在没有事件的情况下切换复选框(从外部):jsfiddle.net/k91k0sLu/1【参考方案7】:通过名称获取电台值
$('input').on('className', function(event)
console.log($(this).attr('name'));
if($(this).attr('name') == "worker")
resetAll();
);
【讨论】:
以上是关于如何使用 jQuery 处理复选框的更改?的主要内容,如果未能解决你的问题,请参考以下文章
复选框状态更改时如何更新mysql字段?使用 jquery (ajax)、php 和 mysql