Javascript文本框验证不起作用?

时间:2016-05-17 00:15:07

标签: 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?

1 个答案:

答案 0 :(得分: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 Validation插件。

希望这有帮助!