2011-08-17 221 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