2011-08-17 127 views
0

我的表單中有一些複選框,當選中該複選框時,我需要更改它們的值。通過jQuery更改複選框的值

例如,這是其中一個複選框:

<input type="checkbox" name="drink" value=""/> 

我知道.val()可以改變它,但我沒能與if語句來做到這一點。

我很欣賞你的回答。

+0

正在檢查的複選框會更改哪個複選框?你的問題缺乏細節 – 2011-08-17 20:45:25

回答

1
// attach an onchange handler to all checkboxes on the page 
$("input[type='checkbox']").change(function() { 

    // or if($(this).prop("checked")) { 
    if(this.checked) { 
     $(this).val("value for checked"); 
    } else { 
     $(this).val("value for unchecked"); 
    } 
}); 
  • onchange事件是一個你應該感興趣,當談到複選框,因爲無論何時改變它的選中狀態觸發。
  • checked屬性確定複選框是否已被選中。
  • .val()方法允許您方便地讀取/寫入元素值。
+0

謝謝Karim,你的回答救了我。 – Nima

3

您可以在複選框添加點擊事件監聽器:

$('input[name="drink"]').click(function() { // when click on it 
    if ($(this).attr('checked')) {   // if the checkbox is checked 
     $(this).val("value #1");    // change the value 
    } else {        // otherwise if is unchecked 
     $(this).val("value #2");    // change the value 
    } 
}); 
+3

更好地將偵聽器附加到'change'事件。複選框的狀態也可以通過鍵盤進行更改,但您的代碼無法捕獲。 –

4

你所追求其實是很沒有意義的。請參閱提交表單時僅檢查複選框實際發送值,因此更改該值尤其是對於未選中的複選框沒有任何意義。


更好的解決方案

而應該給它一個「檢查」的值,並保持這種狀態,這將導致它正確提交即使不改變的值。

+0

我沒有解釋我的目的,我只問了我錯過的部分來完成我的項目。其他答案解決了我的問題。感謝您的答覆。 – Nima