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

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

我在刷新 dataTable 内容时遇到问题。这是我的部分代码。

<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 (not jQuery),它是这样的:

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