You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

模态框关闭后无法为输入框重新设置焦点的问题求助

模态框关闭后无法为输入框重新设置焦点的问题求助

大家好,我碰到了一个关于焦点控制的头疼问题,想请教下有没有朋友遇到过类似情况:

我开发了一个Oracle APEX应用,里面包含一个输入框和若干按钮,完整流程是这样的:

  1. 用户在输入框输入文本后按回车,页面跳转到另一个不含该输入框的页面
  2. 点击某按钮触发弹出一个模态对话框
  3. 关闭对话框后,页面切回原来带输入框的页面,但焦点一直固定在触发模态框的那个按钮上

我希望关闭模态框后能自动把焦点切回原来的输入框,试了好几种写法都没效果:

  • 直接调用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本身关系不大,因为直接在浏览器控制台运行代码也会出现同样的情况。

有没有朋友遇到过类似的场景?或者有什么排查的思路可以分享给我吗?

火山引擎 最新活动