2013-01-01 109 views
3

我需要按名称获取复选框的值。我有以下代码:按名称获取复选框的值

<input type="hidden" name="my_checkbox" value="0"> 
<input type="checkbox" name="my_checkbox" id="my_checkbox_id" value="1" /> 

这个想法是,如果复选框没有选中,我会得到输入类型隐藏的值(这是0)。

这是我已经试过,但没有奏效:

$('input[name=my_checkbox]').val(); 

然而,这同时返回隐藏的输入和复选框的值。任何人都可以告诉我,如何检查时选中复选框的值(1),或者在未选中时获取隐藏输入(0)的值?我想这必须通过名称来完成,以便如果取消选中该复选框,我将获得隐藏输入的值,就像该复选框未被选中一样,您将无法获得其值。

+0

我把一个ID的隐藏元素,这样我就可以独立检索两个元素。 –

+0

出于好奇,你的价值观总是“0”还是“1”? –

+0

@roXon是的,如果复选框被选中,它将是1,否则它将是0. 这不适用于1复选框,我有一组复选框将做同样的事情 – user1809790

回答

0

你可以添加一个新功能吧:

$.fn.checkboxVal = function() { 
    var checked = $(this).filter("[type=checkbox]:checked"); 
    if (checked.length) 
     return checked.val(); 

    return $(this).filter("[type=hidden]").val(); 
}; 

那么你可以说$("input[name=foo]").checkboxVal(),它会帮助您正确的值。

未经测试,所以修复任何错误留给读者练习。

1

你为什么不这样做:

if($("#my_checkbox_id").is(':checked')) { 
    output = $("#my_checkbox_id").val(); 
} else { 
    output = $('input[type=hidden]').val(); 
} 
1

只要找到:visible复选框:

$('input[name="my_checkbox"]:visible').change(function() { 
    if ($('input[name="my_checkbox"]:visible').is(':checked')) { 
    alert($('input[name="my_checkbox"]:visible').val()); 
    } else { 
    alert($('input[name="my_checkbox"]:hidden').val()); 
    } 
}); 

试用小提琴:http://jsfiddle.net/JgzGa/1/

+0

即使未勾选复选框,此返回始终为1 – user1809790

+0

刚更新答案和小提琴。 – Jai

+0

@roXon plz看到更新的小提琴和答案。是的,只是错过了正确阅读这个问题,对此表示歉意。 – Jai

1

其实你不需要隐藏的一个,你只需要说:
if checkbox is not checked set his value to '0'
这就是你需要的一切:

$('input:checkbox').not(':checked').val(0); 
4
<input type="hidden" name="my_checkbox" value="0"> 
<input type="checkbox" name="my_checkbox" id="my_checkbox_id" value="1" /> 

试试这个,它的工作对我来说:

$('input[name="my_checkbox"]:checked').val();