作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过检查是否跳过第一个选项(“选择一个”)以外的其他内容来验证下拉列表
逻辑:该值真的不是“选择”吗?如果是,则返回 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;
}
最佳答案
你的逻辑颠倒了。如果 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;
}
关于javascript - 为什么第一个 If 'is Not' 语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267156/
我是一名优秀的程序员,十分优秀!