我有一个输入文本字段,当 keyup 事件被触发时,它会在javascript函数中更改其值; af:ajax应该触发更改事件:
<h:inputText ... onkeyup="functionThantChangesTextValue(this);">
<f:ajax event="change" listener="#{someExpensiveCall()}".../>
</h:inputText>
问题是,如果我以编程方式更改javascript functionThantChangesTextValue 中inputText的值,则ajax不会触发更改事件
我试过这个:
function functionThantChangesTextValue(field) {
...
field.value = finalValue;
field.onchange();
}
在这种情况下,ajax事件触发正常,但我不希望在更改值后立即发生这种情况。 我真正想要的是在更改值和失去焦点时执行ajax。
答案 0 :(得分:0)
最终我设法使用blur
&amp;找到了某种解决方案。 focus
个事件。
在focus
事件中,我使用storeOldValue
函数存储旧的inputTextValue值,然后仅当当前输入文本值与...不同时才在someExpensiveCall
事件上执行blur
旧的。通过这种方式,我尝试模拟change
事件..
<h:inputText ... onkeyup="functionThantChangesTextValue(this);">
<f:ajax event="focus" listener="#{storeOldValue()}"/>
<f:ajax event="blur" listener="#{someExpensiveCall()}".../>
</h:inputText>