Javascript/Coldfusion 表单循环验证

标签 javascript jquery forms coldfusion

我有一个表单,其内部有一个循环。我正在尝试为表单创建动态验证,但失败了,因为当表单提交时,它只验证最后一个循环。我研究并尝试了许多不同的场景,当然,都失败了!任何帮助或指示将不胜感激!

<cfform name="form" id="form" method="post">
    <cfset Peoplecount = 1>
        <cfloop index="Add" from="1" to="#session.checkout.quantity.pcount#" step="1">

<div class="clearfix">
        <cfinput type="text" name="firstname_#Add#" id="firstname_#Add#" placeholder="First"  validateat="onSubmit" validate="noblanks"  message="Please enter owner #Peoplecount#'s first name." value="#evaluate("session.checkout.info.firstname_#Add#")#">
        <cfinput type="text" name="middlename_#Add#" id="middlename_#Add#" placeholder="Middle" value="#evaluate("session.checkout.info.middlename_#Add#")#">
        <cfinput type="text" name="lastname_#Add#" id="lastname_#Add#" placeholder="Last" validateat="onSubmit" validate="noblanks" message="Please enter owner #Peoplecount#'s last name." value="#evaluate("session.checkout.info.lastname_#Add#")#">
    </div>

    <script type="text/javascript">
      function Validate<cfoutput>#Add#</cfoutput>() {
        $('#firstname_<cfoutput>#Add#</cfoutput>').prop('required',true);
        $('#middlename_<cfoutput>#Add#</cfoutput>').prop('required',false);
        $('#lastname_<cfoutput>#Add#</cfoutput>').prop('required',true);
     }
    </script>

    <cfinput type="submit" name="Submit" value="Submit" onClick="Validate<cfoutput>#Add#</cfoutput>();">

此外,我觉得令人困惑的是,如果循环为 1,则一切正常,但如果循环为大于 1 的任何数字,则它仅验证最后一个循环
当如下所示时:

function Validate() {

<cfinput type="submit" name="Submit" value="Submit" onClick="Validate();">

循环的结尾是这样的:

<cfif Add NEQ session.checkout.quantity.pcount>

<div class="labelspace">
    <label for="andor_<cfoutput>#Add#</cfoutput>"><strong>Please indicate if "or" or "and" is to be shown on title when issued.</strong></label>
    <cfinclude template="../../../ddl/andor.cfm" >
</div><br>

    <cfelse>
        <cfinput type="submit" name="Submit" value="Submit" onClick="Validate();">
    </cfif>

             <cfset Peoplecount = PeopleCount + 1>


     </cfloop>

最佳答案

在没有看到你的 cfloop 结束位置的情况下,我只是在这里假设。但假设 cfloop 位于代码的最后。您最终会得到多个提交按钮,其中每个按钮只会“验证”每个提交按钮的每 3 个输入。

这是我的建议:

  1. 不要重新发明轮子。看看 jQuery.validate 插件。另外,去掉 <cfinput>只需使用 <input>
  2. 无需通过 jQuery 添加所需的属性,只需将其添加到您的 cfinput 中,如 required="required"
  3. 请勿使用evaluate() 。相反,这样做value="#session.checkout.info["lastname_" & Add]#"

关于Javascript/Coldfusion 表单循环验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28219360/

相关文章:

javascript - 值未显示,即使它位于 HTML 中

PHP 表单输入和 mySQL Null

javascript - AMD 兼容的 JavaScript - 定义然后返回与只返回之间的任何区别

jquery - 如何使toggle()在jQuery中工作

javascript - Dojo 小部件未正确呈现

java - JSF 2.2 表单上的 tagmanager.js 不起作用。我究竟做错了什么?

Javascript 元素在视口(viewport)中可见,没有边距

php - PHP Storm 中的帖子出现奇怪问题

javascript - 将多个套接字实例绘制到 Canvas 上并在移动时更新(多人游戏)

javascript - AJAX 调用为空