2016-05-17 91 views
1

我有一個表格,有三個塊的臉書,twitter和pinterest。 我添加了一個條件,只有在選中其中一個塊時才允許提交表單。 對於我所做的:如何指定多個&&和|| JavaScript中if語句中的條件?

if ($("#fb").prop("checked") || $("#tw").prop("checked")|| 
    $("#pin").prop("checked")) { 
    ... 
    ... 
} 
if ($("#fb").prop("checked") || $("#tw").prop("checked")|| 
    $("#pin").prop("checked")) { 
    ... 
    ... 
} 

現在我想要添加另一個條件在那裏將檢查Twitter的塊中,以檢查是否文本字段是否少於140個字符。 對於我增加了一個和條件

if ($("#fb").prop("checked") || $("#tw").prop("checked") && $(#"tw_text").val().length <= 140|| 
    $("#pin").prop("checked")) { 
    ... 
    ... 
} 

但是這有一些缺點,如果Facebook是選擇tw_text有超過140個字符,那麼也表單被提交等。

請引導我以正確的方式添加條件以防止提交表單。

+0

請問您可以編輯問題並解釋確切的邏輯(但請保留在非功能性代碼中)。請隨意使用僞代碼和大量的括號來說明問題。 – brianlmerritt

回答

0

解決方案: 我用這種方式來解決問題。

if($("#fb").prop("checked") || $("#tw").prop("checked") || $("#pin").prop("checked")) { 
    if ($("#tw").prop("checked")) { 
     if($('#tw_text').val().length <= 140) { 
      ...submit form... 
     } 
     else { 
      .... show error for twitter text length.... 
     } 
    } 
    else { 
     ...submit form... 
    } 
} 
else { 
    ... show error message to select minimum one of the options between fb,tw and pinterest ... 
} 
+0

@brianlmerritt謝謝你的關注。我確實使用這種方法解決了這個問題。 –

4

你需要括號將它們分組(邏輯的precedence OR ||比邏輯更小,&&):

if ($("#fb").prop("checked") || 
    ($("#tw").prop("checked") && $(#"tw_text").val().length <= 140) || 
    $("#pin").prop("checked")) { 
... 
+0

但是,如果用戶選擇fb和tw並且twitter文本的字符數大於140,那麼它也會提交表單。我想阻止這一點。 –

+0

所以你只需要一個(有效的)選擇? –

+0

不,我想讓用戶選擇三個中的最小一個,如果他選擇Twitter,他應該有小於140的微博文本。如果fb和twitter一起選擇,它還應該檢查字符的否,並且如果條件得到假。你回答的 –

0

從我從你的描述瞭解的是,只針對Twitter的你需要一個強制性條件滿意。簡單地使用括號可以幫助你。希望以下幫助: if ($("#fb").prop("checked") || ($("#tw").prop("checked") && $(#"tw_text").val().length <= 140) || $("#pin").prop("checked")) { ... ... }

+0

但是,如果用戶選擇fb和tw並且twitter文本的字符數大於140,那麼它也會提交表單。我想阻止這一點。 –