2011-11-16 88 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 - 如果有明確的轉換,我感覺更舒服。 –