当以编程方式更改输入值时,不会执行更改事件
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.
我在刷新 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.