h:从javascript更改其值时,inputText不会触发ajax更改事件

时间:2016-08-23 10:16:17

标签: javascript ajax jsf

我有一个输入文本字段,当 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。

1 个答案:

答案 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>