2015-07-20 28 views
0
function checkforinput() { 

    var valid = true; 
    var date = document.getElementById('date'); 
    var time = document.getElementById('time'); 
    var checkbox = document.getElementById('checkbox-1-1'); 
    if (date.value == "" && time.value == "" && checkbox.checked == false || date.value !== "undefined" && time.value !== "undefined" && checkbox.checked) { 
     document.getElementById('errMsg10').innerHTML = "*Please Schedule in Advance or Select Now"; 
     valid = false; 
    } else { 
     document.getElementById('errMsg10').innerHTML = ""; 
    } 

    return valid; 
} 

的HTML:這個if/else語句的正確格式是什麼?

<input id="date" class="datentime" type="date" name="date" min="2015-07-18" max="2015-12-31" value="1"/> 
<input id="time" class="datentime" type="time" name="time" value="1"/><br> 
<h2 class="bottomOpt">OR</h2><span id="errMsg10"></span> 
<h1 class="bottomOpt"><span class="adnow">Now</span><br><span id="asap">*We'll send help ASAP.</span></h1> 
<input type="hidden" name="now" value="0"/> 
<input type="checkbox" id="checkbox-1-1" class="regular-checkbox" name="now" value="1" /><label for="checkbox-1-1"></label> 
<input type="hidden" name="status" value="3"/> 

在上面的代碼,我所要做的是要求輸入日期,時間和複選框不能是空的,但他們不能全部選擇無論是。它可以是用戶選中複選框選擇日期和時間。

if/else語句的第一部分似乎工作正常,但條件中的||之後的代碼似乎是錯誤的。如果選擇日期和時間,但取消選中複選框,代碼將起作用。如果選中複選框,但未選擇日期和時間,則代碼不起作用。它仍然顯示errMsg10

+0

您需要括號......圍繞需要一起檢查的部分。 – epascarello

回答

0
if ((!date.value && !time.value && !checkbox.checked) 
    || (date.value && time.value && checkbox.checked)) { 

因爲你的條件是OR條件,組2個語句轉化爲顯性塊,以便正確的值進行評估。

此外,它應該很好,只是檢查!time.value而不是明確檢查未定義。很會照顧檢查未定義,爲null或0

另外請注意,使用===比使用==

+0

我剛剛意識到的一點是,如果選擇時間或日期,並且複選框被選中,那麼表單將會通過。任何方式我可以告訴JS,如果!date.value和/或!time.value,不要讓表單通過?我剛試過&& ||但它沒有工作。我猜這不是有效的代碼。 –

+0

你不能使用&& ||',因爲它是無效的,因爲'&&','||'是二元運算符,它們中的每一個都必須由2個「操作數」分開。 –

1

在另一組括號正確組布爾邏輯將更快的操作。

if ((date.value == "" && time.value == "" && checkbox.checked == false) || 
    (date.value !== "undefined" && time.value !== "undefined" && checkbox.checked)) { 
     // bad input... 
    } 
else { 
    // good input... 
} 

順便說一句,你確定你要圍繞着「不確定」,報價比較該字符串,或者你的意思是JavaScript的undefined不斷???

1

這是一個條件語句的熊:P

後||運算符,你有雙等號的!運營商。嘗試替換它們:

date.value != "undefined" && time.value != "undefined"