将表单的值保留在页面上
Keeping the values of form on page
我想在用户提交表单后保留他们在表单上选择的值。
这是我试过的:
<cfset tx_name = "">
<cfset id_age1 = "">
<cfif isDefined("form.tx_name")>
<cfset tx_name = form.tx_name>
<cfif isDefined("a1")>
<cfset id_age1 = form.a1>
</cfif>
</cfif>
<cfoutput>
<input type="text" name="tx_name" value="#tx_name#">
<select name="id_age1">
<cfloop from="1" to="20" index="a1">
<option value="#a1#">#a1#</option>
</cfloop>
</select>
</cfoutput>
我得到了 tx_name
的预期结果,但是 id_age1
没有显示正确的结果。它只是重置回 1
。我做错了什么?
大部分代码都是不必要的。要为不存在的变量定义默认值(不同于为空),只需使用 cfparam。一定要指定变量作用域,避免因作用域冲突导致意外结果:
<cfparam name="form.tx_name" default="">
<cfparam name="form.id_age1" default="">
要预先 select <select>
列表中的项目,您必须 apply the selected
attribute to the appropriate <option>
:
<select name="id_age1">
<cfloop ...>
<option value="#a1#" <cfif a1 eq form.id_age1>selected</cfif>>
#a1#
</option>
</cfloop>
</select>
此外,不确定是否有意省略,但是..这两个表单字段应该嵌套在 <form>
标签中。
我知道这更像是评论,但作为答案更容易阅读。
输入的代码不安全。它受到 HTML 注入。参见:html-injections
<cfparam name="form.tx_name" default="">
...
<input type="text" name="tx_name" value="#EncodeForHTMLAttribute(tx_name)#" />
ColdFusion 有一系列功能来解决这个问题。参见:http://blogs.adobe.com/security/2014/05/coldfusion-11-enhances-the-security-foundation-of-coldfusion-10.html
我想在用户提交表单后保留他们在表单上选择的值。
这是我试过的:
<cfset tx_name = "">
<cfset id_age1 = "">
<cfif isDefined("form.tx_name")>
<cfset tx_name = form.tx_name>
<cfif isDefined("a1")>
<cfset id_age1 = form.a1>
</cfif>
</cfif>
<cfoutput>
<input type="text" name="tx_name" value="#tx_name#">
<select name="id_age1">
<cfloop from="1" to="20" index="a1">
<option value="#a1#">#a1#</option>
</cfloop>
</select>
</cfoutput>
我得到了 tx_name
的预期结果,但是 id_age1
没有显示正确的结果。它只是重置回 1
。我做错了什么?
大部分代码都是不必要的。要为不存在的变量定义默认值(不同于为空),只需使用 cfparam。一定要指定变量作用域,避免因作用域冲突导致意外结果:
<cfparam name="form.tx_name" default="">
<cfparam name="form.id_age1" default="">
要预先 select <select>
列表中的项目,您必须 apply the selected
attribute to the appropriate <option>
:
<select name="id_age1">
<cfloop ...>
<option value="#a1#" <cfif a1 eq form.id_age1>selected</cfif>>
#a1#
</option>
</cfloop>
</select>
此外,不确定是否有意省略,但是..这两个表单字段应该嵌套在 <form>
标签中。
我知道这更像是评论,但作为答案更容易阅读。
输入的代码不安全。它受到 HTML 注入。参见:html-injections
<cfparam name="form.tx_name" default="">
...
<input type="text" name="tx_name" value="#EncodeForHTMLAttribute(tx_name)#" />
ColdFusion 有一系列功能来解决这个问题。参见:http://blogs.adobe.com/security/2014/05/coldfusion-11-enhances-the-security-foundation-of-coldfusion-10.html