2016-08-23 76 views
1

改變其值時的inputText不火的AJAX改變事件我有當KEYUP事件被觸發,自動對焦的JavaScript函數改變其值的輸入文本字段:阿賈克斯應該火的變化事件:H:從JavaScript

<h:inputText ... onkeyup="functionThantChangesTextValue(this);"> 
    <f:ajax event="change" listener="#{someExpensiveCall()}".../> 
</h:inputText> 

的問題是,如果我改變編程在JavaScript functionThantChangesTextValue的該inputText的價值,比阿賈克斯不會觸發針對變化事件

我已經試過這樣:

function functionThantChangesTextValue(field) { 
    ... 
    field.value = finalValue; 
    field.onchange(); 
} 

,並在這種情況下,AJAX事件觸發很好,但我不會真的想要這個變化值後立即發生。 我真正想要的是在更改值和放鬆焦點時執行ajax。

+1

*「失去焦點時」*模糊事件是否合適? – BalusC

+1

是的,我使用了'blur'與'focus'事件相結合的方式讓它工作,看到答案。問題是,如果您使用javascript以編程方式更改輸入字段的值,則不會觸發'change'事件 – Alex

回答

0

最終我設法找到某種解決方案使用blur & focusfocus事件。 在focus事件中,我使用storeOldValue函數存儲舊的inputTextValue值,然後在blur事件上執行someExpensiveCall,只有當前輸入文本值與舊的值不同時。通過這種方式,我嘗試模擬change事件。

<h:inputText ... onkeyup="functionThantChangesTextValue(this);"> 
    <f:ajax event="focus" listener="#{storeOldValue()}"/> 
    <f:ajax event="blur" listener="#{someExpensiveCall()}".../> 
</h:inputText>