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) 的值?我想这必须按名称完成,这样如果未选中复选框,我将获得隐藏输入的值,就像未选中复选框一样,您将无法获得其值。

4

5 回答 5

5
<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();
于 2013-11-06T10:10:01.660 回答
1

Actually you don't need the hidden one, you just need to say:
if checkbox is not checked set his value to '0'
and this is all you need:

$('input:checkbox').not(':checked').val(0);
于 2013-01-01T19:16:20.310 回答
1

你为什么不这样做:

if($("#my_checkbox_id").is(':checked')) {
    output = $("#my_checkbox_id").val();
} else {
    output = $('input[type=hidden]').val();
}
于 2013-01-01T18:10:31.277 回答
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/

于 2013-01-01T18:17:52.613 回答
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()会给你正确的价值。

未经测试,因此修复任何错误留给读者作为练习。

于 2013-01-01T18:08:10.340 回答