2016-05-17 122 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验证插件。

希望这会有所帮助!