2011-11-30 112 views

回答

50

修订:使用代替ATTR丙

<input type="checkbox" name="vehicle" id="vehicleChkBox" value="FALSE"/> 

$('#vehicleChkBox').change(function(){ 
    cb = $(this); 
    cb.val(cb.prop('checked')); 
}); 

DATE OF OUT:

这里是jsfiddle

<input type="checkbox" name="vehicle" id="vehicleChkBox" value="FALSE" /> 

$('#vehicleChkBox').change(function(){ 
    if($(this).attr('checked')){ 
      $(this).val('TRUE'); 
    }else{ 
      $(this).val('FALSE'); 
    } 
}); 
+2

旧的帖子,但你现在应该使用'.prop('checked')'而不是'attr()'。此外,它更容易强制在一行'var $ cb = $(this); $ cb.val($ cb.prop('checked'));'或者如果情况很重要'var $ cb = $(this); $ cb.val(($ cb.prop('checked')+'')。toUpperCase());' – vol7ron

14

使用$('#id-of-the-checkbox').prop('checked', true_or_false);

如果您使用的是古老的jQuery版本,你需要使用.attr('checked', 'checked')检查和.removeAttr('checked')取消选中。

52

你可以这样做(jQuery的1.6起):

$('#idCheckbox').prop('checked', true); 
$('#idCheckbox').prop('checked', false); 

删除您也可以使用:

$('#idCheckbox').removeProp('checked'); 

与jQuery < 1.6你必须做

$('#idCheckbox').attr('checked', true); 
$('#idCheckbox').removeAttr('checked'); 
+0

但是,false的复选框值不会与表单提交一起提交,对吧?有没有办法做到这一点 – IcedDante

4
var checkbox = $("#checkbox"); 
checkbox.val(checkbox[0].checked ? "true" : "false"); 

这将设置value的复选框为"true""false"value propertystring),取决于它是否为uncheckedchecked

作品jQuery中> = 1.0

6

试试这个:

HTML:

<input type="checkbox" value="FALSE" /> 

JQ:

$("input[type='checkbox']").on('change', function(){ 
    $(this).val(this.checked ? "TRUE" : "FALSE"); 
}) 

jsfiddle

请记住,未选中的复选框不会在常规形式提交,并且你应该使用隐藏提交以做到这一点。

+0

你的小提琴片段正在引用一些其他的跨度值。它不会改变复选框的值。请同步您的答案 –

+1

那么,代码段中的'span'仅用于演示目的,如果您查看代码,它将被设置为等于复选框的值。然而,如果你需要更好的(更快的)解决方案,这可能有所帮助:http://jsfiddle.net/SfEGn/130/ – Krule

+0

这是一个代码,你可以从字面上复制粘贴,它会工作。谢谢你的进一步解释 –

相关问题