2011-11-16 90 views
1

所以,如果两个验证工作seperatley(如果我只是把单选按钮验证的功能没有微调验证,然后单选按钮验证工程,同样反之亦然),当我把两个函数中的验证,无线电验证的最高验证工作,但是微调验证的底部验证不会在假设时显示消息?我的JavaScript函数不显示所有验证消息

Code is below: 

     <head> 
       <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
       <title>Create a Session</title> 
         <script type="text/javascript"> 

    function validation() { 
        var errMsgO = document.getElementById("radioAlert"); 
        var btnRadioO = document.getElementsByName("sessionNo");    
        var isbtnRadioChecked = false; 
        var errQuesMsgO = document.getElementById("numberAlert"); 
        var questionNumberO = document.getElementsByName("txtQuestion"); 

        for(i=0; i < btnRadioO.length; i++){ 
         if(btnRadioO[i].checked){ 
          isbtnRadioChecked = true; 
         } 
        } 

        if(!isbtnRadioChecked) { 
         errMsgO.innerHTML = "Please Select the Number of Sessions you Require"; 
        } else { 
         errMsgO.innerHTML = ""; 
        } 
        return false; 



     if(questionNumberO[0].value == 0){ 
      errQuesMsgO.innerHTML = "Please Set the Number of Questions"; 
     } else { 
      errQuesMsgO.innerHTML = ""; 
     } 
      return false; 
       }  
</script> 
     </head> 
     <body> 
     <form action="create_session.php" method="post" name="sessionform"> 
    <table> 
       <tr> 
       <th>2: Number of Sessions :</th> 
       <td class="sessionNo"><input type="radio" name="sessionNo" value="1" />1</td> 
       <td class="sessionNo"><input type="radio" name="sessionNo" value="2" />2</td> 
       <td class="sessionNo"><input type="radio" name="sessionNo" value="3" />3</td> 
       <td class="sessionNo"><input type="radio" name="sessionNo" value="4" />4</td> 
       <td class="sessionNo"><input type="radio" name="sessionNo" value="5" />5</td> 
       </tr> 
       </table> 
       <div id="radioAlert"></div> 
     <table> 
        <tr> 
        <th>Number of Questions:</th> 
         <td class="spinner"><textarea class="spinnerQuestion" name="txtQuestion" id="txtQuestion" cols="2" rows="1"></textarea></td> 
         <td><button class="scrollBtn" id="btnQuestionUp"><img src="Images/black_uppointing_triangle.png" alt="Increase" /></button> 
         <button class="scrollBtn" id="btnQuestionDown"><img src="Images/black_downpointing_triangle.png" alt="Decrease" /></button></td> 
         </tr> 
         </table> 
         <div id="numberAlert"></div> 
         <p><input class="questionBtn" type="button" value="Prepare Questions" name="prequestion" onClick="validation()" /></p>  <!-- Prepare Questions here--> 

       </form> 
     </body> 
+2

DOM元素数组永远不会等于零。 –

+0

此外,如果预期输入是一个数字,为​​什么不把它放入文本输入而不是文本区? –

+0

当我研究spinners时,它使用了textarea而不是文本输入框。我稍后会改变。感谢您的信息 – BruceyBandit

回答

2

的一个错误,我会发现是线路if(questionNumberO == 0){除了你还没有</script>关闭了<script>元素)。

正确的方法是:

if(questionNumberO[0].value == 0){ 

为什么:

getElementsByName()将返回指定name属性元素的集合。如果你知道只有一个,你可以要求第一个([0])。

value属性存储输入元素的当前值。见HTMLInputElement on MDN

更新:我为您创建了working jsFiddle Demo

+0

它仍然不显示下面的消息。我看不到任何拼写错误,所以一定是另一种方式来做到这一点。尼斯尝试tho – BruceyBandit

+0

请检查我的小提琴,它的作品。将它与您的代码进行比较。基本上我已经改变了两件事,那就是我提到的。 – kapa

+1

textarea的值永远不会为0 - 如果有明确的转换,我感觉更舒服。 –