簡體   English   中英

如果僅滿足幾個條件之一,則if語句返回true(jQuery)

[英]If statement returns true though only one of several conditions are met (jQuery)

我想通知用戶,如果在提交之前未回答任何可選的單選按鈕,則要答復用戶表單(以確保已故意跳過了它們)。 我的問題是,盡管我使用多個條件設置了一個if語句,但是當滿足任何一個條件而不是所有條件都滿足時,if語句返回true。 我正在使用jQuery 1.7.1。

Javascript:

$("#optmsg").show();
function updateFormEnabledOpt() {
if (verifyOpt()) {
    $("#optmsg").hide();
} else {
    $("#optmsg").show();
}
}

function verifyOpt() {
if ($("#formidable input:radio[name='q11']:checked").val() !== 'undefined' && $("#formidable input:radio[name='q12']:checked").val() !== 'undefined' && $("#formidable input:radio[name='q13']:checked").val() !== 'undefined') {
    return true;
} else {
    return false;
}
}

$('#formidable input:radio[name="q11"]').change(updateFormEnabledOpt);
$('#formidable input:radio[name="q12"]').change(updateFormEnabledOpt);
$('#formidable input:radio[name="q13"]').change(updateFormEnabledOpt);​

因此:只要這三個問題中的任何一個都具有選中的單選按鈕,就將#optmsg隱藏。 Jsfiddle(腳本附帶一些html): http : //jsfiddle.net/rnPA6/

更新:感謝您的幫助! 以驚人的速度,我可能會補充! 這是一個有效的小提琴: http : //jsfiddle.net/rnPA6/14/

如果在輸入元素中未設置任何不等於undefined ,則val()方法將返回空字符串。 嘗試此操作,如果該值為空,則不會通過。

if ($("#formidable input:radio[name='q11']:checked").val() 
     && $("#formidable input:radio[name='q12']:checked").val() 
     && $("#formidable input:radio[name='q13']:checked").val() ) {

}

如果沒有為輸入單選按鈕設置任何值,則當您在其上調用val()方法時,jQuery將返回"on" 因此,如果未設置,則應為每個單選按鈕設置至少一個空值。

您正在比較使用and(&&)。 jsfiddle中,我修復了您的代碼以使用or(||)。

您正在與包含文本'undefined'而不是值undefined的字符串進行比較。

這樣可以:

function updateFormEnabledOpt() {
  $("#optmsg").show();
  if (($("#formidable input:radio[name='q11']:checked").val() !== undefined) && ($("#formidable input:radio[name='q12']:checked").val() !== undefined) && ($("#formidable input:radio[name='q13']:checked").val() !== undefined)) {
      $("#optmsg").hide();
  } 
}

$('#formidable input:radio[name="q11"]').change(updateFormEnabledOpt);
$('#formidable input:radio[name="q12"]').change(updateFormEnabledOpt);
$('#formidable input:radio[name="q13"]').change(updateFormEnabledOpt);

實際觀看: http : //jsfiddle.net/BwUWp/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM