【问题标题】:"onclick" of a button in a popup works only once弹出窗口中按钮的“onclick”仅适用一次
【发布时间】:2013-04-18 15:16:19
【问题描述】:

我有一个导入 jquery mobile 的 html/php 网页(文件名为 searchresults.php)。当你进入页面时,url通常类似于

www.domain.com/searchresults.php?&sort="off"&max="5"

在此示例中,排序关闭,仅显示 5 个项目。在该页面上有一个按钮,它打开一个弹出窗口,我希望用户能够更改这些设置。我使用内置的 jquery 移动弹出窗口。在该弹出窗口中,您可以打开/关闭“排序”,并且可以输入新的最大值。弹出窗口中有一个“确定”按钮,用于确认您的新设置。它看起来像这样:

<a href="" id="okbutton" data-role="button" onclick="sortAgain();">OK</a>

sortAgain(); javascript 中的函数如下所示:

function sortAgain();
{
    //some code to get the necessary variables//
    ...

    //change the href of the button so you reload the page
    document.getElementById("okbutton").href = "searchresults.php" + "?keyword=" + var1 + "&sort=" + var2 + "&max=" + var3
 }

所以,基本上,就在“确定”按钮导航到另一个页面之前,我设置了它应该导航的页面的href。

此方案有效,并且从服务器再次获取 searchresults.php 文件并重新解释(使用 url 中的新变量)。

但是,如果我在更改一次后再次尝试更改设置,则弹出窗口什么也不做!换句话说,弹出窗口上 ok 按钮的 href 保持为空,并且不调用 javascript 函数 sortAgain()。我不明白为什么它第一次调用 onclick 方法很好,然后拒绝再次调用它?

我认为这与弹出 html 代码是 searchresult.php 文件的一个组成部分这一事实有关,并且指向同一页面的hrefing会产生问题?弹出是纯html,弹出代码中不涉及php。再次,它第一次运行良好。

【问题讨论】:

  • 这是通过 ajax 加载的吗?您提到了标准导航,但为什么要在整页导航上更改 href(除非您使用 AJAX)?
  • 我不认为我在使用 ajax? php 文件根据 sort 和 max 参数从数据库中获取内容。弹出窗口获得一些用户输入,然后再次进入 searchresult.php?&sort...,但使用新参数。重新加载php文件时,由于变量不同,会更新搜索结果。

标签: javascript jquery jquery-mobile popup


【解决方案1】:

您应该了解如何通过 JavaScript 附加事件。见这里:javascript attaching events

【讨论】:

  • 这只是对良好编程实践的一般反馈,还是在已知存在错误的 html 标记中使用 onclick()?
  • 这将取决于您正在测试的浏览器...任何移动设备或桌面 Chrome/Firefox/等?
【解决方案2】:

在 JQM 中设置点击处理程序时需要使用“pageinit”事件:http://api.jquerymobile.com/category/events/

这是一个如何在页面首次加载时绑定点击处理程序的示例。

$( document ).on( "pageinit", "#that-page", function() {
    $('#okbutton').on( "click", "#that-page", function( e ) { 
        $(this).attr("href", "searchreslts.php");
    });
});

【讨论】:

猜你喜欢
  • 2017-08-13
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
相关资源
最近更新 更多