从自动填充列表中选择值时运行 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 &lt; 48 &amp;&amp; event.which != 8 &amp;&amp; event.which != 26 &amp;&amp; event.which != 44 &amp;&amp; event.which != 46) || (event.which != 127 &amp;&amp; event.which &gt; 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 侦听器操作的主要内容,如果未能解决你的问题,请参考以下文章

Laravel-从下拉列表中选择值后自动填充输入

从 SQL 填充的 Ajax 自动完成扩展器

ajax调用后kendo mvvm不更新

级联动态选择列表的动态操作在列表值更改时触发,而不仅仅是当用户从列表中选择一个值时

Jquery Chosen 插件 - 通过 Ajax 动态填充列表

下拉列表的 Ajax 和 SQL 填充