从表单中按顺序显示CFL​​oop项目

时间:2013-10-30 13:39:25

标签: coldfusion coldfusion-9

我在页面form.html上有以下表格,它提交给cfpage.cfm。所有名字,姓氏,地址和年龄均显示,但不是按照一致的顺序显示。有时它会显示姓氏,名字,地址和年龄。在另一个例子中,它可能会显示地址,名字,年龄,然后是姓氏。

如何显示CFL​​oop项目 - 用户在文本框中输入的文本 - 按照表单中显示的顺序显示?我有多个通用表单,所以我必须在cfpage.cfm上使用一些通用代码来捕获提交表单提交的内容。

<form id="theform" name="theform" action="cfpage.cfm" method="post">
First Name
<input type="text" name="first name">

Last Name
<input type="text" name="last name">

 Address
<input type="text" name="address">

Age
<input type="text" name="age">
</form>

cfpage.cfm上的代码

<cfloop collection="#form#" item="theField">
<cfif theField is not "fieldNames">
#theField# = #form[theField]#<br>
</cfif>
</cfloop>

1 个答案:

答案 0 :(得分:6)

如果您希望它们以相同的顺序显示在表单上,​​那么您必须使用此机制循环:

<cfloop index="i" list="#Form.FieldNames#" delimiters=",">
    #Form[i]#
</cfloop>

以下代码验证了您遇到的问题,并显示上面的循环有效 - 另存为stacktest.cfm:

<form id="theform" name="theform" action="stacktest.cfm" method="post">
First Name <input type="text" name="first name">
Last Name <input type="text" name="last name">
Address <input type="text" name="address">
Age <input type="text" name="age">
<input type="submit" value="submit"/>
</form>

<cfoutput>
<cfloop collection="#form#" item="theField">
<cfif theField is not "fieldNames">
    #theField# = #form[theField]#<br>
</cfif>
</cfloop>

<cfloop index="i" list="#Form.FieldNames#" delimiters=",">
    #i# = #Form[i]#<br>
</cfloop>
</cfoutput>

更新:第二个循环现在提供与第一个循环相同的输出,只是按顺序。根据提出问题的用户的请求更新。