2016-05-17 146 views
0

昨天的大部分時間我都試圖將它解決,但沒有運氣 - 我對Javascript很陌生,所以請耐心等待。我試圖創建一個問卷作爲我被要求去做的一個項目的一部分。Javascript文本框驗證不起作用?

我有下面的代碼,它創建了一組文本框供用戶輸入問題 - 他們選擇他們想要創建多少個文本框/問題。這是執行文本創造和傳遞用戶希望創建爲Javascript的問題數量的代碼:

 <?php 
     //Loop for question textboxes 
     for ($i = 1; $i <= intval($_SESSION['Questions']); $i++) { 
     echo" 
      <b>Question ". $i ."</b><br> 
      <input type='text' style='width: 42em;' name='box{$i}' id='box{$i}'> 
      <br><br> 
     "; 
     } 
     echo' 
     <br> 
     <input type='.Submit.'> 
     <br><br> 
     ';    

    ?> 

    <script> 
     var Questions = <?php echo json_encode($_SESSION['Questions']); ?>; 
    </script> 

,然後提交表單:

function QuestionsValidation(f) { 

     var msg = ""; 

     for (i = 1; i <= Questions; i++) { 
      if (f.box+i.value == "") { 
       msg += "Question" +i "empty!\n";     
      } 
     } 

     if (msg !== "") { 
      alert ("Errors in form:\n" + msg); 
      return false; 
     } 

     else { 
      return true; 
     } 
} 

,我幾乎可以肯定,它不工作的原因是在JavaScript For循環中的IF語句中,但我很欣賞任何建議。我刪除了For循環中的IF語句並將其替換爲:

 for (i = 1; i <= Questions; i++) { 
      msg += f.box+i.value;     
     } 

嘗試並解決問題。它返回NaN?

+0

傳遞給f類中的QuestionsValidation函數的是什麼。你是否使用jQuery的JavaScript庫? – Brett

+0

我沒有碰過jquery,到目前爲止我已經取得了很多成功,但沒有碰到它,所以我認爲我可以應付這一點,而不必進入它。我有一個這樣的表單:

Jim555

回答

0

當通過循環創建文本框,添加一個類,每文本框狀

<input type='text' class='question' style='width: 42em;' name='box{$i}' id='box{$i}'> 

在提交按鈕,調用validateQuestions()函數一樣

<input type='submit' onclick='return validateQuestions();' value='Submit' /> 

寫下面的jQuery代碼

$(function(){ 
function validateQuestions(){ 
    $('.question').each(function(){ 
     if ($(this).val()==''){ 
      alert('Question is required.'); // or write error msg in a div 
      $(this).focus(); 
      return false; 
     } 
    }) 
}   
}) 

注意:也嘗試閱讀jQuery驗證插件。

希望這會有所幫助!