我有一个输入文本字段,当 keyup 事件被触发时,它会在 javascript 函数中更改其值,并且有一个 f:ajax 应该为 change 事件触发:
<h:inputText ... onkeyup="functionThantChangesTextValue(this);">
<f:ajax event="change" listener="#{someExpensiveCall()}".../>
</h:inputText>
问题是,如果我以编程方式更改 javascript functionThantChangesTextValue 中 inputText 的值,那么 ajax 不会触发 change 事件
我已经尝试过这个:
function functionThantChangesTextValue(field) {
...
field.value = finalValue;
field.onchange();
}
在这种情况下,ajax 事件触发得很好,但我真的不希望在更改值后立即发生这种情况。 我真正想要的是在更改值和失去焦点时执行 ajax。
最佳答案
最终我设法使用 blur
和 focus
事件找到某种解决方案。
在 focus
事件中,我使用 storeOldValue
函数存储旧的 inputTextValue 值,然后在 blur
上执行 someExpectiveCall
仅当当前输入文本值与旧输入文本值不同时才发生该事件。通过这种方式,我尝试模拟 change
事件..
<h:inputText ... onkeyup="functionThantChangesTextValue(this);">
<f:ajax event="focus" listener="#{storeOldValue()}"/>
<f:ajax event="blur" listener="#{someExpensiveCall()}".../>
</h:inputText>
关于javascript - :inputText does not fire ajax change event when changing its value from javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39098385/