我有一个cfselect,它工作得很好。我有一个onclick事件来刷新到cfselect的绑定,因为查询内容经常变化,我想让用户拥有更新的list.Now,我想添加"Select any Bus“作为第一个选项,但我不能这样做。
在从cfc返回结果之前,我尝试在查询结果中添加一行。但我不能选择除'Select any Bus‘之外的任何其他值。
我的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 FROM tbl_bustype WHERE busType_railroad_letter=
javascript:
function refresh(s)
{
ColdFusion.Bind.assignValue('dpDwnBs','value', dataCalcu.getAllBus(s))
}一旦我删除了onclick事件,一切都会正常工作。请帮帮我。
发布于 2011-05-06 23:37:35
在最初误解了这个问题之后,让我们进行另一个挥杆。
选择框上的固定onclick绑定事件永远不会起作用。要像大多数人一样使用选择框,请单击它两次:一次下拉它,一次选择您的项目。但是,在第一次单击时,将重置该项目。即使框保持打开状态(我怀疑这可能与浏览器相关,但并未真正测试),第二次单击也会将其重置,这意味着您将丢失选择,因为选定的项将被销毁并重新创建为新的DOM节点。
我能想到三个解决方案。
首先,您可以向表单添加一个刷新按钮,然后刷新选择框中的值。
其次,您可以使用jQuery或类似的方法绑定事件,然后单击刷新选项列表,然后删除onclick事件绑定。这意味着用户只能刷新选项一次,但(希望)这应该足够了。如果页面ui被多次使用(例如,通过AJAX ),您可以在提交时重新绑定onclick刷新事件。
最后,将表单项显示为一个不可编辑的文本字段(onfocus="blur();“IIRC)。添加一个按钮,或者更改焦点事件以启动一个模式窗口,该窗口通过AJAX或类似的方式从你的CFC中拉出选项并显示它们,这样每当他们选择编辑这个项目时,他们就会得到一组新的选择。
所有这些都有一个缺点,就是不能保留以前的选择,因为绑定刷新会销毁所有选项odes并构建一个新的选项列表。
https://stackoverflow.com/questions/5911034
复制相似问题