我在我的ColdFusion頁面上有一個下拉菜單,它根據其選擇過濾數據列表。選擇通過URL傳遞並顯示結果。問題是我想保留頁面重新加載後所做的選擇。現在它每次都回到第一個選項。在ColdFusion中將URL傳遞給下拉菜單後,如何保留選擇?
這是我如何通過下拉菜單中的onChange使其通過網址:
<cfif IsDefined(url.filterBy)>
query...
</cfif>
我在我的ColdFusion頁面上有一個下拉菜單,它根據其選擇過濾數據列表。選擇通過URL傳遞並顯示結果。問題是我想保留頁面重新加載後所做的選擇。現在它每次都回到第一個選項。在ColdFusion中將URL傳遞給下拉菜單後,如何保留選擇?
這是我如何通過下拉菜單中的onChange使其通過網址:
<cfif IsDefined(url.filterBy)>
query...
</cfif>
您的選項標籤裏面,你把一個if語句來檢查通過表單範圍傳遞的值。
所以:
<select name="myDropdown" id="myDropdown">
<option value="someValue"<cfif Form.myDropdown EQ 'someValue'> selected="selected"</cfif>>Some value</option>
</select>
我的下拉菜單不在表格內,所以我不能把「Form.myDropdown」。有沒有解決的辦法? – wahle509 2011-02-07 15:14:11
如果我在讀你的問題吧,你只需要看看現有URL.filterby
值符合您選擇一個值。
<cfparam name="URL.filterby" value="" />
...
<select name="mySelect" onChange="window.location.href='myPage.cfm?filterBy=' + this.value">
<option value="option1" #selectIf(URL.filterby IS "option1")#>Option 1</option>
<option value="option2" #selectIf(URL.filterby IS "option2")#>Option 2</option>
</select>
CFPARAM確保始終存在URL.filterby的值。 selectIf
只是一個UDF,我用它來防止混亂我的HTML與CFML代碼。它只需將任何可以解釋爲布爾值的東西並根據需要返回一個字符串。
function selectIf(checkVal) {
if (checkVal) {
return "selected=""selected""";
} else {
return "";
}
}
那麼你的頁面的其餘部分可以看看URL.filterby,如果它有一個值,然後做你的查詢,並顯示您的數據。
<cfif structKeyExists(URL,"filterby") AND URL.filterby IS NOT "">
<!--- query here, etc. --->
...
所以,我已經找到了一種不同的方式(排序)。我所做的是抓住URL的字符串查詢部分,只修剪國家名稱並將其與下拉菜單的值進行比較。
<option value="#CountryName"
<cfif #CountryName# EQ #replace(#CGI.StringQuery#,"filterBy=","")#>
selected="selected"
</cfif>>#CountryName#
</option>
工程很好,大部分。當涉及到不止一個單詞的國家名稱時,這些空格會將其混淆並且不會保留選擇。我試過也是這樣替換空格:
#replace(#CGI.StringQuery#,"%20"," ")#
但是,沒有好處。任何人都有解決方案來識別空間?
可能需要更多信息才能真正幫助您。你的SELECT是什麼樣的? – ale 2011-02-07 16:24:10
我的select語句如下: