Coldfusion包括选择所选值的模板下拉列表



我正在创建一个下拉列表,并试图使其自动选择"FL"。出于某种原因,它只是从数组中的第一个状态"AL"开始。有人能告诉我哪里出了问题吗?

HTML

<cfinclude template="dlstates.cfm">

dlstates.cfm

<cfset values = "AL,AK,AZ,AR,CA,CO,CT,DE,DC,FL,GA,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VT,VA,WA,WV,WI,WY">
<cfset text = "AL,AK,AZ,AR,CA,CO,CT,DE,DC,FL,GA,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VT,VA,WA,WV,WI,WY">
<cfoutput><select name="dlstate_#Add#" id="dlstate_#Add#" required selected="FL"></cfoutput>
    <cfloop index="x" from="1" to="#listLen(values)#">
        <cfset value = listGetAt(values, x)>
        <cfset label = listGetAt(text, x)>
        <cfoutput>
        <option value="#value#" <cfif isDefined("form.dlstate_#Add#") and form["dlstate_#Add#"] eq value> selected</cfif>>#label#</option> 
        </cfoutput>
    </cfloop>
</select>

<select>中的selected属性不会起任何作用,它不是该元素的属性之一。

为了选择佛罗里达州(FL),您可以在页面顶部附近添加以下内容(但在设置了Add的值之后!):

<cfparam name="form.dlstate_#Add#" default="FL" />

顺便说一句,我建议你远离isDefined(),改用structKeyExists()。后者效率更高:

isDefined("form.dlstate_#Add#") ==> structKeyExists(form, "dlstate_#Add#")