Coldfusion:在select中选择一个选项后的特定操作

时间:2017-07-27 16:39:40

标签: forms select coldfusion option

我有以下代码:

   <cfif session.language is ("DE")>
     <cfset bl=ValueList(getContent.G,",")>
   <cfelseif  session.language is ("FR")>
     <cfset bl=ValueList(getContent.H,",")>
   <cfelseif  session.language is ("EN")>
     <cfset bl=ValueList(getContent.I,",")>
   </cfif>

   <cfset tags = sizes />
   <cfset bltags = bl />
   <cfset tagArray = arrayNew(1) />
   <cfset tagArrayDATA = arrayNew(1) />
   <cfloop list="#tags#" index="tag" delimiters=",">
     <cfif not ArrayFindNoCase(tagArray,tag)>
       <cfset arrayAppend(tagArray, tag) />
     </cfif>
   </cfloop>
   <cfloop list="#bltags#" index="tag" delimiters=",">
     <cfif not ArrayFindNoCase(tagArrayDATA,tag)>
       <cfset arrayAppend(tagArrayDATA, tag) />
     </cfif>
   </cfloop>

    <cfoutput>
      <cfif isdefined("tagArray") AND arraylen(tagArray) GT 1>              
        <form name="frmsize" id="frmsize" action="/index.cfm?showusage" method="post">
          <cfif isdefined("tagArray") AND arraylen(tagArray) GT 1>
            <div>
              <select name="valuesize">
                <option value="">Choose your option</option>
                <cfloop from="1" to="#arraylen(tagArray)#" index="i">
                  <option value="#tagArray[i]#">#tagArray[i]#
                  <cftry>
                    &nbsp;#tagArrayDATA[i]#
                    <cfcatch>
                    </cfcatch>
                  </cftry>
                  </option>
                </cfloop>
              </select>
            </div>
          </cfif>
        </form>
       </cfif>
    </cfoutput>

我的目标是通过链接从tagArrayDATA [i]发送一个值。 看起来应该是这样的:

<form name="frmsize" id="frmsize" action="/index.cfm?showusage&valueArrayData="#tagArrayDATA[i]#" method="post">

我不知道如何管理,因为cfloop低于表单的action属性。

1 个答案:

答案 0 :(得分:1)

据我所知,您无法单独使用服务器端代码执行操作。但是你有几个选择。一个简单的方法是只在Javascript中更改选择时更新操作。

另一个选项是将两个值放在select中并在末尾解析。

<cfloop from="1" to="#arraylen(tagArray)#" index="i">
    <option value="#tagArray[i]#-#tagArrayDATA[i]#">
        #tagArray[i]#&nbsp;#tagArrayDATA[i]#
    </option>
</cfloop>

然后,在解析数据时,只需执行以下操作:

<cfset data = listToArray(FORM.valuesize,'-') />
<!-- data[1] will be the selected value of #tagArray[i]# -->
<!-- data[2] will be the selected value of #tagArrayData[i]# -->
<!-- This assumes the - will never be actually in the data, you could use a different separator -->

我的猜测是它们都是字符串,这应该可以工作,虽然我不知道你为什么在代码的选择部分有一个try / catch,可能看一下更好的方法。如果你真的需要它,我会把它清理干净。

<cfloop from="1" to="#arraylen(tagArray)#" index="i">
    <cfset data = '' />
    <cftry>
        <cfset data = tagArrayData[i] />
    <cfcatch></cfcatch>
    </cftry>
    <option value="#tagArray[i]#-#data#">
        #tagArray[i]#&nbsp;#data#
    </option>
</cfloop>

虽然如果您正在处理另一端的数据,我会确保所有数据都在FORM或URL范围内,但不能混合。我很生气,必须解析FORM范围内的一些表单数据和URL范围中的其他数据。