2013-08-02 76 views
0

我有一對單選按鈕如下jQuery的if語句單選按鈕處理每一次

<label class="radio inline" for="radios-0"> 
    <input type="radio" name="newsletter" id="radios-0" value="1" checked="checked"> 
     Yes 
    </label> 
    <label class="radio inline" for="radios-1"> 
    <input type="radio" name="newsletter" id="radios-1" value="0"> 
     No 
    </label> 

的形式他們是通過AJAX發佈的一部分,該腳本能正常工作。我有一個額外的部分來檢查他們是否選擇單選按鈕上的是或否,如果是訂閱郵件列表。但是,無論選擇是或否,它仍然會進入列表。

是不是因爲他們是相同的名字嗎?然而,沒有相同的名字都可以檢查。

if ($('input:radio[name="newsletter"]').is(':checked') && $('input:radio[name="newsletter"]').val == 1) { 
    //add email to newsletter list 
} 
+2

使用'輸入#收音機,0' – jcubic

+0

感謝您這解決了它,你的恥辱評論,而不是答案,因爲我現在不能選擇它作爲回答。 – Philwn

+0

@PhilNewell如果您切換到'input#radios-0',然後刪除第二個條件。第一個就足夠了,第二個都是錯的。 –

回答

3

你選擇器將返回兩個無線電按鈕和是將檢查其中是否被選中

是()檢查當前匹配組針對一個選擇器單元,元件, 或jQuery對象的和返回真,如果在至少這些元件 匹配給定的參數,reference之一。

您在這兩個單選按鈕有id你更好地在這裏使用id選擇。

if($('#radios-0:checked').length) 
{ 

} 
+0

由於'$'總是返回一個對象,所以這總是成立。你也錯過了''''。 –

+0

謝謝@JamesMontagne,更正。 – Adil

0

更換你的部分代碼:

$('input:radio[name="newsletter"]').val == 1 

與此

parseInt($('input:radio[name="newsletter"]').val(), 10) == 1 

,然後再試一次

$('input:radio[name="newsletter"]').val() == "1" 
+0

也可以檢查字符串'「1」'並跳過'parseInt'。 –

1

嗨,這是你需要的!

if($('input:radio[name="newsletter"]:checked').val() == 1){ 
    //add email to newsletter list 
} 

希望這有助於

也是爲什麼標籤元素中的單選按鈕?

<label class="radio inline" for="radios-0">Yes</label> 
<input type="radio" name="newsletter" id="radios-0" value="1" checked="checked"> 
<label class="radio inline" for="radios-1">No</label> 
<input type="radio" name="newsletter" id="radios-1" value="0"> 

也許這會更好?

0

試試這個:

var radioVal = $("input[name='newsletter']:checked").val(); 
    if (radioVal == 1) { 
     alert("Yes"); 
    }else{ 
     alert("NO"); 
    } 

JSFIDDLE DEMO

0
if ($('input:radio[name="newsletter"]:checked').val() == 1) { 
     //add email to newsletter list 
    } 

因爲如果無線電被選中,這是你檢查。 你必須檢查選擇了哪一個。