2013-03-14 69 views
1

我有一個表單,用戶可以1.)檢查一個選項並完成。或者2.)檢查另一個選項並填寫一個文本字段。滿足所有要求後顯示警報

整體而言,畢竟是說和做完我想我的警報顯示,但它沒有。

$('.know-your-role').show('fast', function() { 
    var $checkboxes = $('input:checkbox.checkchoice'); 
    if($checkboxes.is(':checked')){ 
     // show this after checked and the input has been filled. 
     alert('cool'); 
    }else if($checkboxes.is(':checked') & $(".year").va() != ""){ 
     alert('cool'); 
    } 
}); 

如何在滿足所有要求(複選框和輸入)後獲得顯示的警報? 我製作了一張fiddle here以顯示我正在處理的內容。

非常感謝您的幫助。

回答

1

除了之前的正確答案(缺少&和拼寫錯誤val),這裏還有一個更基本的邏輯問題。你似乎有這樣的結構:

if (conditionA) { 
    // behaviorA 
} else if (conditionA && conditionB) { 
    // behaviorB 
} 

你永遠不會用這樣的邏輯達到行爲B.如果conditionA失敗,則conditionA && conditionB肯定也會失敗。

您是否需要將您的ifelse-if塊的順序顛倒過來?

+0

你是對的邏輯部分。但即使在逆轉條件http://jsfiddle.net/Jg8jT/10/的順序時也是如此。我留下了同樣的問題。 – Modelesq 2013-03-14 20:49:38

+0

有沒有辦法實現OR || senario:'if(conditionA && conditionB){ //這樣做 }或(conditionA){ //做那個 }'? – Modelesq 2013-03-14 20:50:39

+0

'if(conditionA &&!conditionB){// behaviorA} else if(conditionA && conditionB){// behaviorB}'? – daGUY 2013-03-15 01:01:29

0

失蹤「&」

$checkboxes.is(':checked') && $(".year").val() != "" 
0

您應該使用&&而不是&布爾比較,你也似乎有打錯valva

0

我會建議有兩個事件,一個在「教師」複選框被選中,一個在年份字段被完成。這兩個事件都可以觸發單個函數,顯示您的警報以及您想要的任何其他邏輯。所以幾乎沒有重複。

這有助於將事件從顯示/隱藏年份字段的邏輯中分離出來,並且如果這是必需條件,則更容易讓您對兩個事件執行不同的操作。