2016-09-14 141 views
0

我是JavaScript新手,很难验证我的表单。jQuery验证警报问题

我有一个从哪里问客户的问题。有2个必答问题(范围的),我已经设定在一个循环requiredQuestions阵列,会以JavaScript参考,以验证只要求问题)

这里是我的表单代码:

<form id="frmQuestion" method="post"> 
<input type="range" id="#QuestionID# name="#QuestionID#" min="0" max="10"> 
<textarea cols="40" rows="10" name="#QuestionDomID#" id="#QuestionDomID#" </textarea> 
    <input type="button" value="submit" id="frmQuestion_submit"> 
</form> 

而且这里是JavaScript:

<cfoutput> 
    <script type="text/javascript"> 
    $('##frmQuestion_submit').click(function() 
    { 
     var jsArr; 
     var jsArr = #SerializeJson(requiredQuestions)#; 
     for(var i=0;i<jsArr.length;i++){ 
      var question = jsArr[i].FNAME; 
      var qValue = $("##QuestionID#").val(); 

      if (qValue == 0){ 
       alert('Please fill all required fields'); 
       return false; 
      } 
      else{ 
      return true; 
      } 

     } 

    }); 
</script> 

我只想提醒一次,但在这里它是警告两次 - 每个问题。如果我添加返回false,如果第一个问题得到解答,则不提醒。

+0

请摆脱所有的双主题标签的jQuery的 –

+0

哦,我这样做是因为使用ColdFusion作为服务器端语言是,我已经CFOUTPUT – user2675939

+0

你的HTML是相当坏了。如果它现在正在运行,那么浏览器正在变得非常好。你也没有一个名为'frmQuestion_submit'的元素,所以你不能真正绑定到它上面的事件。考虑在表单上设置一个'submit'处理程序。先修复你的HTML然后再碰到其他问题。 –

回答

0

循环遍历所有数组,并设置一个标志,指示发现错误条件。循环执行后,检查标志并采取相应措施。

var validationFailed = false; 
for(var i=0;i<jsArr.length;i++){ 
     var question = jsArr[i].FNAME; 
     var qValue = $("##QuestionID#").val(); 

     if (qValue == 0){ 
      validationFailed = true; 
     } 
} 
if (validationFailed) 
{ 
    alert('Please fill all required fields'); 
    return false; 
} 
else 
{ 
    return true; 
} 
+0

这工作的一部分,但它现在不断提醒消息,永远不会返回true – user2675939

+0

我不是确定你的代码中发生了什么,它检查了值,但可能你提供的代码没有正确地检查值。你确定'.val()'是一个可以与0相比的数字吗?我的猜测是,它不会。你是否想检查'qValue.length'?我假设你也想用'question'变量做一些事情,否则它看起来毫无用处。你的意思是做'qValue = $(“#”+ question).val()'? –

+0

雅,我改变questionID到requiredQuestions数组的问题,工作,谢谢! – user2675939