我希望根据用户点击编辑复选框为表单切换禁用/启用。简单的东西。
当禁用组件工作时,复选框的默认检查行为将被覆盖。我甚至试图返回attr(“checked”,true)以使其工作但没有骰子。我假设这可能与我的标记有关(将复选框放在div中)。无法弄清楚。
$(function(){
$('#target :input').attr('disabled','disabled');
$(':checkbox').toggle(
function(){
$(this).attr("checked",true);
$('#target :input').attr('disabled',false);
},
function(){
$('#target:input').attr('disabled','disabled');
$(this).attr("checked", false);
});
});
谢谢, 布伦丹
答案 0 :(得分:4)
正如@ Devbook.co.uk所指出的,toggle-event
[docs]方法打破了复选框的默认行为。
一种解决方案是使用.change()
事件以及复选框的this.checked
属性。
示例: http://jsfiddle.net/Efpr6/
$('#target :input').attr('disabled', 'disabled');
$('#toggler').change(function() {
$('#target :input').attr('disabled', !this.checked);
});
答案 1 :(得分:3)
尝试$(this).attr('checked', 'checked')
进行检查,然后$(this).removeAttr('checked')
取消选中。
答案 2 :(得分:1)
将$(this).attr("checked",true);
更改为$(this).attr("checked","checked");
答案 3 :(得分:1)
是的,您可能认为应该具有值true或false的属性,往往将属性名称用作值,如下所示:
checked="checked"
disabled="disabled"
有些浏览器会接受checked =“true”,但绝对不是最佳做法。
答案 4 :(得分:1)
答案 5 :(得分:0)
试试这个:
$(this).prop('checked', false);
$(this).prop('checked', true);
看到这个: http://bugs.jquery.com/ticket/10248
这对我有用。