当以编程方式更改输入值时,不会执行更改时事件

On change event doesn't get executed when input value is programatically changed

本文关键字:执行 事件 编程 方式更 输入      更新时间:2023-09-26

刷新数据表内容时遇到问题。这是我代码的一部分。

<h:inputText id="counterFeatures" value="#{myBean.quantity}">
      <f:ajax event="change" render="myDataTable" execute="counterFeatures"></f:ajax>
</h:inputText>

我喜欢做的是当数量发生变化(使用 js 脚本动态)时,从我的 bean 调用 setQuantity() 方法并更新该值。

我尝试了execute="@this"但它也不起作用。我需要说的是,当我像event="keyup"一样设置事件时它可以工作,但我想让事情自动发生,因为毕竟通过 JavaScript 脚本将所有数字插入到那里。

我看了一些答案,但由于我对jsf的了解有限,我无法让它工作。

提前致谢

这确实是正常行为。HTML DOM change事件仅在最终用户操作输入字段后触发。如果输入字段是由 JavaScript 以编程方式操作的,你基本上需要让相同的 JavaScript 代码手动触发 change 事件。

假设你使用的是Vanilla JS(不是jQuery),下面是它的样子:

var input = document.getElementById(...);
input.value = newValue;
input.onchange(); // Trigger JavaScript code declared in `onchange` attribute.