我想保持在表单上的用户选择的值,一旦他们提交表单。
这是我的尝试:
<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>
列表中,必须应用selected
属性相应的<option>
:
<select name="id_age1">
<cfloop ...>
<option value="#a1#" <cfif a1 eq form.id_age1>selected</cfif>>
#a1#
</option>
</cfloop>
</select>
另外,不知道这是否是故意省略了,但..这两个表单字段应嵌套在<form>
标签。
我知道这是更多评论,但它更容易阅读作为回答。
输入的代码是不是安全。 它是受HTML注入。 请参阅: HTML的注射
<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