2014-10-08 58 views
0

我想valdate下拉通過檢查比第一選項以外的東西(「選擇其中一項」)被跳過爲什麼第一個If'is not'聲明不起作用?

邏輯:這是真的,該值不是「選擇」?如果是這樣,則返回true(提交表單)。我相信這個邏輯要求我測試一下,看看這個值是不是第一個選項。我的代碼似乎是正確的,但我想我沒有做「!」運營商正確。

我已經試過這些版本的「如果VAL不是字符串,但他們沒有工作

if(val !== 'choose') 
if(val != 'choose') 

//代碼示例如下

<form onsubmit="return validatedMenu()"> 
    <select id="dropDown"> 
     <option value="choose">Choose one...</option> 
     <option value="1">test1</option> 
     <option value="2">test2</option> 
     <option value="3">test3</option> 
    </select> 
    <input type="submit" value="select" /> 
</form> 
<div>message here: <span id="mySpan"></span></div> 

    function validatedMenu() { 
     var dd = document.getElementById("dropDown"); 
     var val = dd.options[dd.selectedIndex].value; 
     var txt = dd.options[dd.selectedIndex].text; 

     if(val != 'choose') { 
      document.getElementById("mySpan").innerHTML = "You must make a selection."; 
     } 
     else { 
      document.getElementById("mySpan").innerHTML = "Success! You chose " + txt; 
      return false; 
      } 
    return true; 
    } 
+0

我相信邏輯要求我測試,如果該值不是第一個選項。我的代碼似乎是正確的,但我想我沒有做「!」運營商正確。 – ryanjohnsond 2014-10-08 22:01:24

+4

它只是沒有意義......你應該檢查它是否是第一個提醒「你必須做出選擇」的選項......如果不是第一個,他已經做出了有效的選擇,你不覺得? – LcSalazar 2014-10-08 22:03:11

回答

3

你只需要你的邏輯向後翻轉。 。如果val != 'choose',這意味着用戶HAS已經做出了選擇,但是,如果if語句在你沒有的時候運行邏輯,你只需要翻轉你的if/else的內容:

function validatedMenu() { 
    var dd = document.getElementById("dropDown"); 
    var val = dd.options[dd.selectedIndex].value; 
    var txt = dd.options[dd.selectedIndex].text; 

    if(val != 'choose') { 
     document.getElementById("mySpan").innerHTML = "Success! You chose " + txt; 
     return true; 
    } 
    else { 
     document.getElementById("mySpan").innerHTML = "You must make a selection."; 
    } 
    return false; 
} 

但是,如果您由於某種原因想要成功條件爲else和失敗條件爲if,那麼您只需要在if()中反轉您正在評估的內容,以便選擇第一個選項會導致它是真實的:

function validatedMenu() { 
    var dd = document.getElementById("dropDown"); 
    var val = dd.options[dd.selectedIndex].value; 
    var txt = dd.options[dd.selectedIndex].text; 

    if(val == 'choose') { 
     document.getElementById("mySpan").innerHTML = "You must make a selection."; 
     return false; 
    } 
    else { 
     document.getElementById("mySpan").innerHTML = "Success! You chose " + txt; 
     } 
return true; 
} 
+0

sphanley-當我嘗試它時,它沒有工作。期望的邏輯:如果用戶選擇第一個選項,則返回false,並顯示消息「您必須進行選擇」。否則,否則,返回true,並顯示消息「成功...」 – ryanjohnsond 2014-10-08 22:13:43

+0

這就是我發佈的剪貼片所能做到的。如果用戶選擇第一個選項,則if將失敗,否則將運行,並且他們將返回false。如果他們選擇除第一個選項以外的其他選項,他們將輸入if語句併成功返回true。 – 2014-10-08 22:15:04

+1

這就是說,我發佈了第二種方法來解決它,使得故障情況在if中。任何一個人都應該做你想要的東西。 – 2014-10-08 22:17:12