【问题标题】:JQM Function works initially but not after navigating back, data-rel=backJQM 函数最初可以工作,但导航回来后不能工作,data-rel=back
【发布时间】:2015-03-10 21:18:01
【问题描述】:

设计了一个弹出窗口来确认用户想要继续。

<form id=\"PCSDform$z\" action=\"example.php\" method=\"post\" data-ajax=\"false\">
<fieldset data-role=\"controlgroup\" data-type=\"horizontal\" class=\"ui-mini\">
    <input type=\"hidden\" name=\"date\" value=\"adate\" />
    <button type=\"button\" class=\"ui-btn ui-corner-all ui-btn-icon-left ui-icon-phone\" onclick=\"formSubmit('$z');\">Contact User</button>
</fieldset>

<script type="text/javascript">
function formSubmit(formID) {
$("#PCSDconfirm").popup("open");
$("#PCSDpopupYes").attr("onclick","$('form#PCSDform"+formID+"').submit();");
}
</script>

第一次可以正常工作,但是如果您导航到另一个页面(与此表单无关),然后单击返回返回该页面,该功能将不再起作用。单击“联系用户”时不会弹出窗口。

这是否与放置位置有关,如果它在正文中,data-role=page.还是因为 ajax 导航需要以某种方式刷新?

谢谢。

【问题讨论】:

  • 另外它在 php 中,$z 只是一个数值变量。

标签: jquery ajax jquery-mobile


【解决方案1】:

在使用 jQuery Mobile 时不应该使用内联 JavaScript:因为它的架构可能会导致问题。

你仍然可以尝试坚持写作:

onclick=\"javascript:formSubmit('$z');\"

但我强烈建议您在 pageinit 处理程序中附加一个事件,例如:

$(document).on("pageinit", "#your_page_id", function(event)
{
    $(document).on("click", "#your_button_id", function()
    {
        formSubmit(your_PHP_variable);
    });
});

【讨论】:

  • 谢谢。这可能有点困难?我有几个从 mysqli 结果生成的表单和按钮,通过 while 循环生成。我可以给所有一个唯一的数字(就像我对表单 ID 所做的那样)。但这会使选择按钮变得困难。考虑一下,我可以使用一个类来选择按钮。但是不知道如何让它提交正确的表单
  • 为按钮使用一个类。然后使用 jQuery 选择器的强大功能来访问带有.closest("form") 的表单。或者,为按钮添加一个自定义属性,如 data-relativeto="form_id123",以便您可以轻松关联按钮及其表单
  • 谢谢。 .closest 选择器应该很有帮助!另外,我刚刚读到 pageinit 已被 pagecreate 取代。不指定#page_id 是否可以,如果页面上碰巧没有具有该ID 的按钮是否重要?会忽略而不是导致错误?
  • 如果你使用pagecreate,你必须指定一个页面ID。但是在click 处理程序中,您绑定到$(document),所以它只关心按钮ID(无论它在文档上的哪个位置)
猜你喜欢
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
相关资源
最近更新 更多