5

我在 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>
4

1 回答 1

7

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

<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>

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

于 2013-10-30T13:50:50.120 回答