只有一个条件被执行而其他条件没有被执行。请提供解决方案。
function a() {
var x=document.forms["addform"]["gender"].value;
if (x==null || x==""){
alert("Enter gender");
return false;
}
var y=document.forms["addform"]["count"].value;
if (y==null || y==""){
alert("enter country");
return false;
}
}
答案 0 :(得分:2)
两个警报都没有触发的原因(如果你的元素被正确引用)是因为你在每个if中执行return false;
。这可以防止在函数中触发更多代码,因此第二个if
没有机会触发。
在我的代码中,如果return false;
执行,我在函数末尾添加了一个变量,然后添加了if
。这样就可以触发警报。
function a()
{
var submitform = true, x=document.forms["addform"]["gender"].value, y=document.forms["addform"]["count"].value;
if (x===null || x=="") {
alert("Enter gender");
submitform = false;
}
if (y===null || y=="") {
alert("enter country");
submitform = false;
}
// Added an if here
if (submitform === false) {
return false;
}
}
感谢
弗雷德里克
编辑:使用===
是检查相同值的更好做法。有关详情,请参阅this stackoverflow问题。
答案 1 :(得分:0)
一个条件有效,另一个条件不起作用,这意味着您可能对于不起作用的元素名称有错误。 gender
和count
应该是输入或选择元素的name
。因此,如果您使用的是
<select name="gender"> <--- name = gender
<option value="">Please select</option>
<option value="M">Male</option>
<option value="F">Female</option>
</select>
<select name="count"> <--- name = count
<option value="">Please select</option>
<option value="USA">USA</option>
<option value="Canada">Canada</option>
</select>
在一个警报中显示所有错误会更好:
function a()
{
var errors = "";
var x=document.forms["addform"]["gender"].value;
if (x==null || x==""){
errors += "Enter gender" + "\n";
}
var y=document.forms["addform"]["count"].value;
if (y==null || y==""){
errors += "Enter Country" + "\n";
}
if(errors)
{
alert(errors);
return false;
}
}