2011-11-30 153 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

這是一個代碼,你可以從字面上複製粘貼,它會工作。謝謝你的進一步解釋 –

相關問題