2014-10-08 100 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