我有一个链接按钮,当第一次(并且在大多数情况下)进入我的管理作业页面时,它可以正常工作并按预期触发弹出窗口:
<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
,它会在查询字符串上使用特殊值重新加载同一页面,我的数据库已更新。
但是当我按照一组非常常见的步骤操作时,按钮不起作用,弹出窗口也无法打开:
如果我刷新页面,一切都会恢复正常,我可以单击同一按钮并打开弹出窗口。或者,如果我导航到主页,重新加载浏览器,然后导航到“管理作业”,它也可以工作。但 JQM 页面转换过程中一定发生了某些事情,破坏了按钮的可点击性,因此无法启动弹出窗口。任何时候的强制页面刷新都会清除它并解决问题,并且我可以再次成功启动弹出窗口。
这真的很糟糕,因为我无法告诉我的用户“每次按钮无法点击时重新加载页面”。查看问题的步骤是非常常见的步骤,而不是边缘情况。
我注意到一件事:当我的链接按钮上的
aria-expanded
属性为“false”时,可以单击该按钮(实际上是用手指按下),并且弹出窗口打开。但是,当弹出窗口无法启动时(按照上面的重现步骤),我注意到 aria-expanded
属性设置为“true”。所以起初我认为修复是一个简单的技巧。我只需使用 jQuery 将该属性设置为 false,它就会起作用。但事实并非如此。在 Chrome 开发工具中,我将其设置为 false 并尝试单击它,但没有成功。
这确实看起来像是 JQM 中的一个错误,这很可怕,因为它是如此常见/核心功能。有修复方法可以使其工作吗?
我能找到的唯一解决方案是禁用锚元素上的ajax:
<a href='ManageJob.php?JobID=$jobID' data-ajax='false'>
这会破坏很酷的页面转换,但至少所有按钮现在都可以在目标页面上使用。我期待 JQM 修复这个巨大的错误。