javascript - :inputText does not fire ajax change event when changing its value from javascript

标签 javascript ajax jsf

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

最佳答案

最终我设法使用 blurfocus 事件找到某种解决方案。 在 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/

相关文章:

javascript - typescript 中的对象可能是 'null'

javascript - Firebase 函数 - 使用不同参数的函数两次

javascript - 使用ajax调用php脚本不起作用

jsf - 正确设置 HTTP header 以强制缓存 JS、CSS 和 PNG 文件

java - 重构JSP页面

javascript - roundslider 的半色

javascript - 如何以这种形式获得日期?

javascript - 将表单与多个文件一起发布到 Web API

javascript - codeigniter 获取 ajax post 文件

javascript - JSF - outputFormat 尝试将参数解析为数字