Как сохранить выбор, который был сделан в раскрывающемся меню после прохождения его через URL в ColdFusion? - PullRequest
0 голосов
/ 07 февраля 2011

На моей странице ColdFusion есть раскрывающееся меню, которое фильтрует список данных на основе их выбора. Выбор передается через URL, и результаты отображаются. Проблема в том, что я хотел бы сохранить выбор, сделанный после перезагрузки страницы. Прямо сейчас каждый раз возвращается к первому варианту.

Вот так я передаю его через URL с помощью onChange выпадающего меню:

<cfif IsDefined(url.filterBy)>
     query...
</cfif>

Ответы [ 3 ]

1 голос
/ 07 февраля 2011

Внутри вашего тега option вы помещаете оператор if, который проверяет значение, переданное через область формы.

So:

<select name="myDropdown" id="myDropdown">
  <option value="someValue"<cfif Form.myDropdown EQ 'someValue'> selected="selected"</cfif>>Some value</option>
</select>
0 голосов
/ 09 февраля 2011

Итак, я понял это по-другому (вроде). Что я делаю, так это беру часть URL-адреса String Query, обрезаю только название страны и сравниваю его со значениями выпадающего меню.

<option value="#CountryName" 
  <cfif #CountryName# EQ #replace(#CGI.StringQuery#,"filterBy=","")#>
    selected="selected"
  </cfif>>#CountryName#
</option>

Работает хорошо, по большей части. Когда речь идет о названиях стран, состоящих из более чем одного слова, пробелы запутывают это, и выбор не сохраняется. Я попытался также заменить пробелы как таковые:

#replace(#CGI.StringQuery#,"%20"," ")#

Но ничего хорошего. У кого-нибудь есть решение для этого, чтобы распознать пробелы?

0 голосов
/ 07 февраля 2011

Если я правильно понял ваш вопрос, вам просто нужно посмотреть, соответствует ли существующее значение URL.filterby значению в вашем SELECT.

<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. --->
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...