#javascript #coldfusion #onclick
#javascript #coldfusion #onclick
Вопрос:
У меня есть 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:
ВЫБЕРИТЕ busType_id_pk
,busType_name ИЗ tbl_bustype
ГДЕ busType_railroad_letter =
javascript:
function refresh(s)
{
ColdFusion.Bind.assignValue('dpDwnBs','value', dataCalcu.getAllBus(s))
}
Как только я удаляю событие onclick, все работает нормально. Пожалуйста, помогите мне здесь.
Ответ №1:
Изначально неправильно истолковав вопрос, давайте попробуем еще раз.
Постоянное событие привязки onclick в поле выбора никогда не будет работать. Чтобы использовать поле выбора так, как это делает большинство людей, вы нажимаете на него дважды: один раз, чтобы опустить его, и один раз, чтобы выбрать свой элемент. Однако при первом нажатии вы сбрасываете элемент. Даже если окно остается открытым (я подозреваю, что это может зависеть от браузера, но на самом деле я не проверял), второй щелчок также сбросит его, что означает, что вы потеряете свой выбор, поскольку выбранный элемент уничтожается и воссоздается как новый узел DOM.
Я могу придумать три решения.
Во-первых, вы можете добавить кнопку обновления в форму, а затем обновить значения в поле выбора.
Во-вторых, вы можете использовать jQuery или аналогичный для привязки события, а затем onclick обновить список опций, а затем удалить привязку события onclick. Это означает, что пользователь может обновить параметры только один раз, но (надеюсь) этого должно быть достаточно. Если пользовательский интерфейс страницы используется несколько раз (например, через AJAX), вы можете повторно привязать событие обновления onclick при отправке.
Наконец, отобразите элемент формы в виде редактируемого текстового поля (onfocus=»blur();» IIRC). Добавьте кнопку или измените событие фокусировки, чтобы запустить модальное окно, которое извлекает параметры из вашего CFC через AJAX или аналогичный и отображает их, так что в любое время, когда пользователи решают отредактировать этот элемент, они получают новый набор вариантов.
Недостатком всех этих настроек является то, что предыдущие варианты не сохраняются, поскольку обновление привязки уничтожает все ode опций и создает новый список опций.
Комментарии:
1. Эй, Бен, я думаю, ты абсолютно прав. Я остановлюсь на третьем варианте. Огромное спасибо, Бен.