我在页面form.html上有以下表格,它提交给cfpage.cfm。所有名字,姓氏,地址和年龄均显示,但不是按照一致的顺序显示。有时它会显示姓氏,名字,地址和年龄。在另一个例子中,它可能会显示地址,名字,年龄,然后是姓氏。
如何显示CFLoop项目 - 用户在文本框中输入的文本 - 按照表单中显示的顺序显示?我有多个通用表单,所以我必须在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>
答案 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>
更新:第二个循环现在提供与第一个循环相同的输出,只是按顺序。根据提出问题的用户的请求更新。