我试图通过检查除第一个选项以外的其他内容("选择一个")来跳过下拉
逻辑:值是不是"选择"?如果是,则返回true(提交表单)。我相信逻辑要求我测试一下这个值是不是第一个选项。我的代码似乎是正确的,但我想我不是在做#34;!"操作员正确。
我已经尝试过这些版本的"如果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 :(得分:3)
你的逻辑向后翻转。如果val != 'choose'
,则表示用户已进行选择。但是,在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;
}