从自动填充列表中选择值时运行 ajax 侦听器操作
Posted
技术标签:
【中文标题】从自动填充列表中选择值时运行 ajax 侦听器操作【英文标题】:Run ajax listener action when choosing value from autofill list 【发布时间】:2015-08-10 09:40:31 【问题描述】:我使用 jsf + richfaces + jboss seam。我有代码:
<h:inputText id="receiptAmount" style="text-align: right;"
value="#receiptsHome.instance.receiptAmountString"
onkeypress="if((event.which < 48 && event.which != 8 && event.which != 26 && event.which != 44 && event.which != 46) || (event.which != 127 && event.which > 57)) return false;">
<a:support event="onkeyup" ajaxSingle="true"
reRender="receiptAmount1, listContractsDiv"
action="#receiptsHome.setPaymentMoneyForListContracts" />
</h:inputText>
但是当我在 chrome 上工作时。我有2个案例如下:
案例 1:我从键盘输入数值:20000。它在 a:support 标记中运行操作并在右侧重新渲染红色文本。没关系 :
案例 2:我不使用键盘。我使用鼠标从具有相似值的自动填充列表中单击:20000(浏览器之前已保存旧的该值)。它不在 a:support 标签中运行:
如何从自动填充列表中进行选择,它仍在运行?
【问题讨论】:
【参考方案1】:现代浏览器支持oninput
(不确定a4j
是否支持此事件)这两种情况都会触发:如果按下某个键或选择了自动完成条目。
如果您不想依赖它,请在输入元素上使用autocomplete="off"
。 (但是我相信有些浏览器忽略了这一点)。
如果您不需要在每次击键后处理数据,最好的选择是使用onblur
,因为无论是打字还是自动完成选择,都会有一次blur
事件输入元素再次失去焦点。
【讨论】:
不是a4j:support支持的问题,h:inputText一开始就不支持事件以上是关于从自动填充列表中选择值时运行 ajax 侦听器操作的主要内容,如果未能解决你的问题,请参考以下文章
级联动态选择列表的动态操作在列表值更改时触发,而不仅仅是当用户从列表中选择一个值时