我需要按名称获取复选框的值。我有以下代码:
<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 :(得分: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();
答案 1 :(得分:1)
你为什么不这样做:
if($("#my_checkbox_id").is(':checked')) {
output = $("#my_checkbox_id").val();
} else {
output = $('input[type=hidden]').val();
}
答案 2 :(得分: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());
}
});
答案 3 :(得分:1)
实际上你不需要隐藏的那个,你只需要说:
if checkbox is not checked set his value to '0'
这就是你所需要的:
$('input:checkbox').not(':checked').val(0);
答案 4 :(得分: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()
它会给你正确的值。
未经测试,所以修复任何错误都留给读者练习。