我在blur
事件上有一个带Ajax功能的输入字段,在我的页面上有一个commandButton。如果我修改输入字段上的值并单击commandButton而不显示,将首先调用哪个方法?听众附加到输入字段或按钮?
根据我迄今为止的经验,首先调用的那个会有所不同,这会导致我的应用程序出现问题。我希望始终首先调用输入字段的监听器。
有谁知道如何处理这种情况?
更新 感谢您的回复,经过多次故障排除后,我注意到已经提到过首先调用ajax监听器,但在极少数情况下,在监听器方法处理完一些所需逻辑之前调用了按钮操作。在我的情况下,我需要侦听器方法在调用按钮操作之前完成处理,否则可能会发生一些意外的行为。有可能这样做吗?
答案 0 :(得分:1)
请记住,JSF中的所有内容都会转换回HTML和JavaScript。因此这是一个简单的测试:
<input type="text" id="field1" onblur="blurFunction();">
<br/>
<button onclick="clickFunction()">Click</button>
将告诉您需要了解的内容。通过我所做的测试,blur
首先出现。
如果您遇到此问题,为什么不点击按钮进行简单检查,以确保运行blur
上需要运行的内容?
根据编辑过的问题,您可以随时在blur
事件上设置标记。
function blurFunction() {
document.myVar = 1;
//... rest of the function
}
function clickEvent() {
if(document.myVar = 1) {
//wait
} else {
//do your click event
}
}
不建议将变量放在全局范围内。这仅仅是如何做到这一点的一个例子。