返回页面后无法点击链接按钮触发弹窗

问题描述 投票:0回答:1

我有一个链接按钮,当第一次(并且在大多数情况下)进入我的管理作业页面时,它可以正常工作并按预期触发弹出窗口:

<a href="#dialogCompletion" data-rel="popup" data-position-to="window" data-transition="pop" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-icon-calendar ui-btn-icon-left ui-btn-b" aria-haspopup="true" aria-owns="dialogCompletion" aria-expanded="false">Job Complete</a>

单击时,我的弹出窗口启动,显示日期和按钮,我可以更改日期,单击按钮,调用 JavaScript 函数,调用

location.href
,它会在查询字符串上使用特殊值重新加载同一页面,我的数据库已更新。

但是当我按照一组非常常见的步骤操作时,按钮不起作用,弹出窗口也无法打开:

  1. 单击“管理作业”页面上的按钮,弹出窗口打开,设置日期,单击弹出窗口中的按钮,页面重新加载,发生数据库写入。
  2. 点击我的图标即可导航至主页。
  3. 通过单击主页上的导航链接导航回“管理作业”页面(我刚才所在的位置)。
  4. 单击应该触发弹出窗口的按钮 - 但事实并非如此。

如果我刷新页面,一切都会恢复正常,我可以单击同一按钮并打开弹出窗口。或者,如果我导航到主页,重新加载浏览器,然后导航到“管理作业”,它也可以工作。但 JQM 页面转换过程中一定发生了某些事情,破坏了按钮的可点击性,因此无法启动弹出窗口。任何时候的强制页面刷新都会清除它并解决问题,并且我可以再次成功启动弹出窗口。

这真的很糟糕,因为我无法告诉我的用户“每次按钮无法点击时重新加载页面”。查看问题的步骤是非常常见的步骤,而不是边缘情况。

我注意到一件事:当我的链接按钮上的

aria-expanded
属性为“false”时,可以单击该按钮(实际上是用手指按下),并且弹出窗口打开。但是,当弹出窗口无法启动时(按照上面的重现步骤),我注意到
aria-expanded
属性设置为“true”。所以起初我认为修复是一个简单的技巧。我只需使用 jQuery 将该属性设置为 false,它就会起作用。但事实并非如此。在 Chrome 开发工具中,我将其设置为 false 并尝试单击它,但没有成功。

这确实看起来像是 JQM 中的一个错误,这很可怕,因为它是如此常见/核心功能。有修复方法可以使其工作吗?

jquery-mobile
1个回答
0
投票

我能找到的唯一解决方案是禁用锚元素上的ajax:

<a href='ManageJob.php?JobID=$jobID' data-ajax='false'>

这会破坏很酷的页面转换,但至少所有按钮现在都可以在目标页面上使用。我期待 JQM 修复这个巨大的错误。

© www.soinside.com 2019 - 2024. All rights reserved.