模态框关闭后无法为输入框重新设置焦点的问题求助
模态框关闭后无法为输入框重新设置焦点的问题求助
大家好,我碰到了一个关于焦点控制的头疼问题,想请教下有没有朋友遇到过类似情况:
我开发了一个Oracle APEX应用,里面包含一个输入框和若干按钮,完整流程是这样的:
- 用户在输入框输入文本后按回车,页面跳转到另一个不含该输入框的页面
- 点击某按钮触发弹出一个模态对话框
- 关闭对话框后,页面切回原来带输入框的页面,但焦点一直固定在触发模态框的那个按钮上
我希望关闭模态框后能自动把焦点切回原来的输入框,试了好几种写法都没效果:
- 直接调用APEX的API:
apex.item("XXXX").setFocus(); - 加了延迟的APEX API写法:
setTimeout(function() { apex.item("XXXX").setFocus(); console.log($(":focus")) }, 5000); - 用jQuery直接调用focus方法的延迟版本:
setTimeout(function() { $("#XXXX").focus(); console.log($(":focus")) }, 5000);
不管用哪种写法,焦点都牢牢停留在触发按钮上。但有个特别奇怪的现象:如果我手动点击输入框让它获得焦点,再点击其他区域让它失焦,这时候再运行上面带setTimeout的代码,就能够成功把焦点切回输入框了!
感觉像是页面切回原状态后,输入框的某种状态导致JS“识别不到”它可以被设置焦点?我觉得这应该是JS层面的问题,和APEX本身关系不大,因为直接在浏览器控制台运行代码也会出现同样的情况。
有没有朋友遇到过类似的场景?或者有什么排查的思路可以分享给我吗?




