【问题标题】:How to open a new page in jQuery Mobile from javascript function如何通过 javascript 函数在 jQuery Mobile 中打开新页面
【发布时间】:2023-03-25 02:06:01
【问题描述】:

我的 html 表单中有一个按钮。当我在 textfield 中输入值时,会执行后台操作并将数据发送到服务器。但是由于此按钮已经有一个事件(提交),我该怎么做后台操作完成后打开一个新页面?

这是按钮。

<a href="#" id="submit" data-role="button" data-inline="true"> Submit</a>

在我的javascript中我有这个功能

$(document).ready( function() {

$("#submit").bind('click', function(event){
    doSomeBackgroundStuff();

});

这是从Page A 发生的,我希望Page BdoSomeBackgroundStuff() 完成后打开。

【问题讨论】:

  • 你可以使用回调函数。

标签: javascript jquery


【解决方案1】:

因为这个按钮已经有一个事件(提交)

使用 preventDefault 或返回 false:

$(document).ready( function() {

$("#submit").bind('click', function(event){
     event.preventDefault(); //or just use : return false; at last  
     doSomeBackgroundStuff();

});

【讨论】:

  • 但这如何告诉javascript打开Page B
  • 如您所说,您的事件正在从默认事件功能中打开页面 A,所以现在您正在尝试打开页面 B,该页面将打开并阻止执行其他一些任务意味着不会打开页面 A
  • 我想你误解了我的问题。submit 按钮打不开Page A,它是那个页面中的一个按钮。
【解决方案2】:

您有几个选择。

首先,使用您已有的内容,您可以为绑定事件使用回调函数,并添加 window.open 以加载新页面,然后简单地传入一个 url,或对其进行硬编码。

你的 jquery 看起来像:

$(document).ready( function() {

$("#submit").bind('click', function(event){
    //fire AJAX request
    doSomeBackgroundStuff();

},function(){//call back function
window.open('http://www.yourURL.com');
});//end bind

});//end doc ready

这里是 window.open 的进一步阅读 - How to open a new HTML page using jQuery?

第二种选择是使用 AJAX。您将为新页面设置 AJAX 请求,并使用 $.ajaxSend 和 $.ajaxComplete 在请求之前和之后触发函数。

你的 jquery 看起来像:

//on button click
$('#submit').click(function(){
   doSomeBackgroundStuff();
});

//ajax start handler
$(document).ajaxStart(function(){
    //do stuff before AJAX request
});

//ajax complete
$(document).ajaxComplete(function(){
  //do stuff after AJAX request

});

具有类似解决方案的related question

Global AJAX handlers

希望对你有帮助

【讨论】:

  • 我正在尝试在我的应用程序中打开一个新页面。Page B 不是网址,而是我的应用程序上的一个页面。但是,根据您的建议,我做了类似window.open("#page_b_id); 的操作。这将在新窗口中打开 Page B(不是期望的结果)并且 doSomeBackgroundStuff() 不会执行。
  • 听起来你需要一个 ajax 解决方案。你可以使用 ajax complete 方法来做一些背景资料。我对以下问题的回答可能会有所帮助stackoverflow.com/questions/23216493/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 2011-02-05
  • 2012-10-08
  • 2015-07-11
  • 1970-01-01
相关资源
最近更新 更多