0

我正在创建的 Web 应用程序存在问题。我有一个功能可以检查用户是否在使用我的 Web 应用程序的某个部分之前输入了某些数据。我一直在将我的函数绑定到页面创建事件。

$(document).on('pagecreate', function(){
                checkOpenCalls();
                alert('page create event firing');
});

如果用户在浏览页面之前没有输入函数的参数,则 checkOpenCalls 函数会打开一个对话框,让用户输入数据。问题是,如果用户不小心浏览到此页面并在对话框中点击取消。对话框再次打开,用户陷入无限循环。

如果通过 AJAX 调用页面但在对话框关闭时也不会继续触发,什么事件会加载我的函数?我已经尝试过pageinit事件pageshow,但每次显示页面时它们都会触发。

编辑:当您直接浏览到页面时(在浏览器中打开一个新选项卡并直接转到该页面),我得到了我想要的行为(对话框已关闭且未打开新的)但是如果您转到我的应用程序主页,然后浏览到功能网页,我得到了我在上面的主要帖子中描述的行为。

4

1 回答 1

1

您正在使用正确的页面事件,但您的问题是您将它用于每个可能的页面和对话框(因为对话框只是页面的另一个版本)。

您需要做的是将此事件绑定到某个页面。例如,如果这是您的页面:

<div data-role="page" id="index">

</div>

只有在第一次创建此页面时,您才会使用此 javascript 执行:

$(document).on('pagecreate', '#index',function(){
    checkOpenCalls();
    alert('page create event firing');
});

如果你看一下,因为我的页面有一个 id #index,这个pagecreate事件绑定到它,没有别的。

于 2013-07-17T15:54:56.813 回答