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

时间:2017-10-25 03:21:13

标签: jquery-mobile

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

<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. 单击“管理作业”页面上的按钮,弹出窗口,设置日期,单击弹出窗口中的按钮,页面重新加载,发生DB写入。
  2. 点击我的图标以导航到主页面。
  3. 点击主页上的导航链接,导航回“管理作业”页面(我刚才的位置)。
  4. 单击应触发弹出窗口的按钮 - 但不会。
  5. 如果我刷新页面,一切都很好,我可以点击相同的按钮,然后弹出窗口。或者,如果我导航到主页面,重新加载浏览器,然后导航到管理作业,它也可以。但是在JQM页面转换过程中必然会发生某些事情,这会破坏我的按钮的可点击性,因此它无法启动弹出窗口。任何强制页面刷新都会清除它并解决问题,我可以再次成功启动弹出窗口。

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

    我注意到的一件事:当我的链接按钮上的aria-expanded属性为“false”时,可以单击该按钮(实际按下手指),然后弹出窗口。但是当弹出窗口无法启动时(根据上面重复的步骤),我注意到aria-expanded属性设置为“true”。所以起初我认为修复很容易。我只是使用jquery将该属性设置为false,它将起作用。但事实并非如此。在Chrome开发工具中,我将其设置为false并尝试点击它,但没有成功。

    这看起来好像是JQM中的一个错误,这很可怕,因为它是这样的常见/核心功能。但我很乐意了解我可以做的任何类型的黑客/修复工作。提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

这会杀死很酷的页面转换,但现在至少所有按钮都在目标页面上工作。我期待JQM解决这个巨大的错误。