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

如何从javascript函数在jQuery Mobile中打开新页面,javascript,jquery,Javascript,Jquery,我的html表单中有一个按钮。当我在文本字段中输入值时,会执行后台操作,并将数据发送到服务器。但是,由于此按钮已具有事件提交功能,因此在后台操作完成后,如何打开新页面 这是按钮 <a href="#" id="submit" data-role="button" data-inline="true"> Submit</a> 这是从A页开始的,我想在doSomeBackgroundStuff完成后打开B页 因为此按钮已经有一个事件提交 使用默认值或返回false: $(d

我的html表单中有一个按钮。当我在文本字段中输入值时,会执行后台操作,并将数据发送到服务器。但是,由于此按钮已具有事件提交功能,因此在后台操作完成后,如何打开新页面

这是按钮

<a href="#" id="submit" data-role="button" data-inline="true"> Submit</a>
这是从A页开始的,我想在doSomeBackgroundStuff完成后打开B页

因为此按钮已经有一个事件提交

使用默认值或返回false:

$(document).ready( function() {

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

});

你有几个选择


首先,使用已有的功能,可以对绑定事件使用回调函数,并添加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
//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

});
这里是关于window.open的进一步阅读-

第二种选择是使用AJAX。您可以为新页面设置一个AJAX请求,并在请求前后使用$.ajaxSend和$.ajaxComplete启动函数

您的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
//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

});
A具有类似的解决方案


希望这对您有所帮助

您可以使用回调函数。但这如何告诉javascript打开B页?您的事件正在从默认事件函数抛出以打开a页,正如您所说,因此,现在您正在尝试打开B页,这将打开并阻止执行其他任务。我认为您误解了我的问题。提交按钮不会打开A页,而是该页中的一个按钮。我正在尝试在我的应用程序中打开一个新页。B页不是网址,而是我应用程序中的一个页。但是,根据你的建议,我做了类似window.openpage\u b\u id;的事情;。这会在一个新窗口中打开B页,但结果并不理想,doSomeBackgroundStuff也不会执行。我觉得您需要一个ajax解决方案。您可以使用ajax complete方法制作一些背景资料。我对以下问题的回答可能会有所帮助