如何从javascript函数在jQuery Mobile中打开一个新页面

时间:2014-05-12 03:47:42

标签: javascript jquery

我的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 B完成时doSomeBackgroundStuff()打开。

2 个答案:

答案 0 :(得分:0)

  

因为此按钮已有事件(提交)

使用preventDefault或return false:

$(document).ready( function() {

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

});

答案 1 :(得分:0)

您有几个选择。

首先,使用您已经拥有的内容,您可以为绑定事件使用回调函数,并添加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

希望这有帮助