2011-11-16 1 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

スピナーを研究したとき、テキスト入力ボックスではなくテキストエリアを使用しました。私は後で変更する予定です。情報をありがとう – BruceyBandit

答えて

2

1つのミスがラインif(questionNumberO == 0){(あなたが</script>であなたの<script>要素を閉じていないほか)です。

正しい方法は次のとおりです。

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

理由:

getElementsByName()は、指定されたname属性を持つ要素のコレクションを返します。唯一のものがあることが分かっている場合は、最初のもの([0])を尋ねることができます。

valueプロパティは、入力要素の現在の値を格納します。 HTMLInputElement on MDNを参照してください。

更新:私はworking jsFiddle Demoを作成しました。

+0

まだメッセージが表示されていません。私はそれを行う別の方法でなければなりませんが、私はどのような誤植を見ることができません。 Nice try tho – BruceyBandit

+0

私のフィドルをチェックしてください。あなたのコードと比較してください。私は基本的に2つのことを言い換えました。 – kapa

+1

テキストエリアの値は決して0ではありません。明示的な変換があった場合、私はより快適に感じます。 –

関連する問題