【问题标题】:Coldfusion conditional select option does not work in IE9, Chrome and FirefoxColdfusion 条件选择选项在 IE9、Chrome 和 Firefox 中不起作用
【发布时间】:2013-03-25 01:46:55
【问题描述】:

抱歉,我可能会问初学者问题,对不起我的英语,但我似乎无法完成这项工作(我没有开发这个)。

我在 Coldfusion 中有 3 个选择下拉框。第一个下拉状态由数据库 onload 填充:

 <cfquery name="qState" datasource="#Variables.fw.Config.DSN#">
    SELECT * from refState WHERE State = '#url.BindID#' AND status = 'Active' order by ldesc
</cfquery>

<select name="State">
                <option value="" <cfif isDefined("url.PrevID") and #url.PrevID# EQ "">selected</cfif>></option>
                <cfoutput query="qState">
                    <option value="#qState.State#" <cfif isDefined("url.PrevID") and #url.PrevID# EQ #qState.State#>selected</cfif>>#qState.Ldesc#</option>
                </cfoutput>
            </select>

然后它将选定的值传递给第二个下拉列表,即城市:

<cfdiv id="City" bind="url:index.cfm?section=public&action=City&txtReff=#txtReff#&BindStateID={State}&PrevCityID=#txtCity#">

查询获取所在州的城市:

<!--- loop to fix the state, returns the correct value even though i hav limited knowledge on this --->
    <cfset num = 0>
    <cfloop index="i" list="#url.BindStateID#" delimiters=",">
        <cfset num = #num# + 1>
        <cfif #num# EQ 2>
            <cfset p = #i#>
        </cfif>
    </cfloop>

<!--- then the query to get cities under the state --->
    <cfquery name="qCity" datasource="#Variables.fw.Config.DSN#">
        SELECT * from refCity WHERE State = '#p#' AND status = 'Active' order by ldesc
    </cfquery

>

最后显示要选择的城市

<select name="City">
                <option value="" <cfif isDefined("url.PrevCityID") and #url.PrevCityID# EQ "">selected</cfif>></option>
                <cfoutput query="qCity">
       <option value="#qCity.City#" <cfif isDefined("url.PrevCityID") and #url.PrevCityID# EQ #qCity.City#>selected</cfif>>#qCity.Ldesc#</option>

                </cfoutput>
            </select>

问题是这仅适用于 IE6、7 和 8。它不适用于 Chrome、IE 9 及更高版本和 firefox。

任何帮助将不胜感激。谢谢你

【问题讨论】:

  • 您是否在其他浏览器上遇到错误?
  • 另外,我建议使用 structKeyExists(url,'PrevCityID'),删除 if 语句中的 ## 并使用 selected="selected"
  • Firebug 或 Chrome/IE9 等价物是否会显示任何 javascript 错误?

标签: coldfusion


【解决方案1】:

我添加了标签以防止 SQL 注入,并删除了包含 ## 的额外标签。您不需要它们,而是 cfif 语句。

另外,在州区域,你有一个看起来有点奇怪的循环。看来您只有一个选择下拉框,因此它只有 1 个变量,但是,您正在循环遍历它,就好像它有多个并取第二个值一样。我不明白,觉得你的代码在那个位置可能出错了。

我建议将您的代码更改为以下内容:

 <!--- Personal Preference --->
 <cfparam name="url.prefid" default="">

 <cfquery name="qState" datasource="#Variables.fw.Config.DSN#">
    SELECT * from refState 
    WHERE State = <cfqueryparam cfsqltype="cf_sql_varchar" value="#url.BindID#">
          AND status = 'Active' 
    order by ldesc
</cfquery>

<select name="State" id="State">
    <option value="" <cfif trim(url.PrevID) eq "">selected</cfif>></option>
    <cfoutput query="qState">
      <option value="#qState.State#" <cfif trim(url.previd) eq qState.State>selected</cfif>>#qState.Ldesc#</option>
    </cfoutput>
</select>

然后是你的下一个文件:

<cfparam name="url.bindstateid" default="">

<!--- then the query to get cities under the state --->
    <cfquery name="qCity" datasource="#Variables.fw.Config.DSN#">
        SELECT * 
        from refCity 
        WHERE 1=0 
        <cfif trim(url.bindstateid) is not "">
        OR (State = <cfqueryparam cfsqltype="cf_sql_varchar" value="#url.bindstateid#"> AND status = 'Active')
        </cfif>
        order by ldesc
    </cfquery

最后一个

<cfparam name="url.prevcityid" default="">

<select name="City">
    <option value="" <cfif trim(url.prevCityid) eq "">selected</cfif>></option>
    <cfoutput query="qCity">
        <option value="#qCity.City#" <cfif trim(url.PrevCityID) is "">selected</cfif>>#qCity.Ldesc#</option>
    </cfoutput>
</select>

【讨论】:

  • 您在 qCity 查询中缺少结束 cfif
猜你喜欢
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 2014-05-06
  • 2014-12-25
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多