2013-01-01 146 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();