Связанный cfselects 'onClick вызывает проблему - PullRequest
0 голосов
/ 06 мая 2011

У меня есть cfselect, который работает нормально.У меня есть событие onclick, чтобы обновить привязку к cfselect, потому что содержимое запроса меняется довольно часто, и я хочу, чтобы у пользователей был обновленный список. Теперь я хочу добавить «Выбрать любую шину» в качестве первого параметра, который я не могусделать.

Я попытался добавить строку в результат запроса, прежде чем он будет возвращен из моего cfc.Но я не могу выбрать любое другое значение, кроме «Выбрать любую шину».

Мой код cfselect:

<cfinvoke component="getCalculatorData" method="getAllBus"  argumentcollection="#houseArgs#" returnvariable="qry_busList">
<cfform style="align:centre" id="frm_drpDwnBus" name="frm_drpDwnBus"> 
<cfinput name="hdnrr" value="#rrSbstring#" type="hidden">
<cfselect name="dpDwnBs" bindOnLoad="true" 
  bind="cfc:getCalculatorData.getAllBus(hdnrr.value)" 
  value="busType_id_pk" 
  display="busType_name" >
  onclick="javascript:refresh(hdnrr.value)"
  <option value="0" on>Select a Bus</option>
</cfselect> 
</cfform> 

Мой cfc: SELECT busType_id_pk, busType_name ОТ tbl_bustype ГДЕ busType_railroad_letter =

javascript: 1011

function refresh(s)
 {
  ColdFusion.Bind.assignValue('dpDwnBs','value', dataCalcu.getAllBus(s))
 }
10111013 * Как только я удаляю событие onclick, все работает нормально.Пожалуйста, помогите мне здесь.

1 Ответ

0 голосов
/ 06 мая 2011

Первоначально неверно прочитав вопрос, давайте сделаем еще одно колебание.

Постоянное событие привязки при нажатии на поле выбора никогда не сработает.Чтобы использовать поле выбора, как это делает большинство людей, вы щелкаете по нему дважды: один раз, чтобы раскрыть его, и один раз, чтобы выбрать свой элемент.Однако при первом нажатии вы сбрасываете элемент.Даже если поле остается открытым (я подозреваю, что это может зависеть от браузера, но на самом деле не проверено), второй щелчок также сбросит его, означая, что вы потеряете свой выбор, так как выбранный элемент уничтожается и воссоздается какновый узел DOM.

Я могу придумать три решения.

Сначала вы можете добавить в форму кнопку обновления и затем обновить значения в поле выбора.

Во-вторых, вы можете использовать jQuery или аналогичный метод для привязки события, а затем нажать кнопку мыши.обновите список параметров, а затем удалите привязку события onclick .Это означает, что пользователь может обновить параметры только один раз, но (надеюсь) этого должно быть достаточно.Если страница использовалась несколько раз (например, через AJAX), вы можете перепривязать событие обновления onclick при отправке.

Наконец, отобразите элемент формы в виде не редактируемого текстового поля (onfocus = "blur ();" IIRC).Добавьте кнопку или измените событие фокуса, чтобы запустить модальное окно, которое извлекает параметры из вашего CFC через AJAX или аналогичные и отображает их, так что каждый раз, когда они решают редактировать этот элемент, они получают новый набор вариантов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...