如何在javascript中使用document.getelementbyname中的条件

时间:2015-03-14 07:20:16

标签: javascript html

这里我遇到问题,如果条件它验证主题而不验证媒体字段。这里的复选框来自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>

2 个答案:

答案 0 :(得分:0)

因为如果第一个条件变为false,那么它将停止执行代码,因为你已经“返回”。

根据你的代码,两者都不会被验证。

首先检查所有主题然后尝试,如果能够工作,你将得到第二个。

答案 1 :(得分:0)

&#13;
&#13;
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;
&#13;
&#13;

你犯的错误非常愚蠢。无论何时使用返回键,它都将退出该功能,并且不会处理下面或下一个代码。此外,我认为您正在尝试验证表单,如果至少选择了一个主题和媒介,表单是有效的。要么提醒用户。这样做的简单方法是首先在函数内部使用两个变量,一个用于主题,另一个用于中等,并将它们都设置为false,这意味着没有选择任何内容。现在运行一个循环并在选中复选框时将相关变量设置为true,这意味着至少有一个被检查了你想要的。在两个循环之后,现在为以下三个状态写一个if-else-then条件: 两者都是真的 - &gt;检查至少一个主题和媒介 一个是真的,一个是假的 - &gt;未选择主题或媒介。 两者都是假的 - &gt;没有选择。

如果你正在尝试别的东西留下评论,我会发布解决方案。此外,请随时询问您是否还有其他问题。