这里我遇到问题,如果条件它验证主题而不验证媒体字段。这里的复选框来自mysql。但它只给出了这样的来源。在这里知道问题是如果条件只有如何克服这个?可以解决我的代码中的问题是什么?我在这里要做什么。我希望每个人都理解这个问题。我不明白为什么第二个如果条件声明不起作用。
function check() {
//alert('done')
var chk = document.getElementsByName('subject[]');
var reg = document.getElementsByName('regional[]');
var len = chk.length;
var regl = reg.length;
//alert(len);
if (len) {
for (i = 0; i < len; i++) {
if (chk[i].checked) {
return true;
} else {
alert('please select the subject');
return false;
}
}
}
if (regl) {
for (i = 0; i < regl; i++) {
if (reg[i].checked) {
return true;
} else {
alert('please select the regional');
return false;
}
}
}
}
<form name="f1" action="" method="post">
Subject
<input type='checkbox' name='subject[]' value='science'>science<br/>
<input type='checkbox' name='subject[]' value='maths'>maths<br/>
Medium
<input type='checkbox' name='regional[]' value='Hindi'>Hindi<br/>
<input type='checkbox' name='regional[]' value='english'>english<br/>
<input type="submit" name="land" class="butt" value="SUBMIT" onClick="return check();">
</form>
答案 0 :(得分:0)
因为如果第一个条件变为false,那么它将停止执行代码,因为你已经“返回”。
根据你的代码,两者都不会被验证。
首先检查所有主题然后尝试,如果能够工作,你将得到第二个。
答案 1 :(得分:0)
function check() {
var subjects = document.getElementsByName("subject[]"),
regionals = document.getElementsByName('regional[]'),
subjectSelected = false,
regionalSelected = false;
// check subject
for(var i=0;i<subjects.length;i++){
if(subjects[i].checked){subjectSelected = true;}
}
// check medium
for(var i=0;i<regionals.length;i++){
if(regionals[i].checked){regionalSelected = true;}
}
if(!subjectSelected || !regionalSelected){
if(!subjectSelected){ // subject not selected
alert("Please select a subject.");
}else{ // medium not selected
alert("Please select a regional.");
}
}
}
&#13;
<form name="f1" action="" method="post">
Subject
<input type='checkbox' name='subject[]' value='science'>science<br/>
<input type='checkbox' name='subject[]' value='maths'>maths<br/>
Medium
<input type='checkbox' name='regional[]' value='Hindi'>Hindi<br/>
<input type='checkbox' name='regional[]' value='english'>english<br/>
<input type="submit" name="land" class="butt" value="SUBMIT" onClick="return check();">
</form>
&#13;
你犯的错误非常愚蠢。无论何时使用返回键,它都将退出该功能,并且不会处理下面或下一个代码。此外,我认为您正在尝试验证表单,如果至少选择了一个主题和媒介,表单是有效的。要么提醒用户。这样做的简单方法是首先在函数内部使用两个变量,一个用于主题,另一个用于中等,并将它们都设置为false,这意味着没有选择任何内容。现在运行一个循环并在选中复选框时将相关变量设置为true,这意味着至少有一个被检查了你想要的。在两个循环之后,现在为以下三个状态写一个if-else-then条件: 两者都是真的 - &gt;检查至少一个主题和媒介 一个是真的,一个是假的 - &gt;未选择主题或媒介。 两者都是假的 - &gt;没有选择。
如果你正在尝试别的东西留下评论,我会发布解决方案。此外,请随时询问您是否还有其他问题。