0

我管理一个 SharePoint 网站,并且对底层代码的访问权限有限;但是,我可以在页面加载后通过 JavaScript 进行操作。一直在使用 jQuery 和 SPServices。

我有一个要添加到表单的自定义按钮;它覆盖了页面上的标准“保存”按钮,因此我可以在保存/关闭之前执行一些其他 ajax 内容。这工作正常:

$('#the_save_button').hide();

$("#my_custom_save_button").click(function() {
    // do some custom stuff first
    $('#the_save_button').trigger('click'); // 
    window.close();
}

该项目保存和window.close()火灾。伟大的!但是,现在,我宁愿不关闭窗口而是设置window.location.href... 但是,当我这样做时,页面会在完成触发之前被重定向,并且trigger('click')我的项目没有保存:

$('#the_save_button').hide();

$("#my_custom_save_button").click(function() {
    // do some custom stuff first
    $('#the_save_button').trigger('click'); // 
    window.location.href = "/my/new/url.aspx";
}

我试过使用window.setTimout,但$('#the_save_button').trigger('click')它本身有一个内置的重定向......

关于如何解决这个问题的任何想法?

4

1 回答 1

1

是的,只需让您的点击处理程序返回一个延迟对象并使用它来决定何时重定向。

$("#the_save_button").click(function(e){
    e.preventDefault();
    return $.ajax({...});
});

现在你可以这样做:

$("#my_custom_save_button").click(function() {
    // do some custom stuff first
    $('#the_save_button').triggerHandler('click').done(function(){
        window.location.href = "/my/new/url.aspx";
    });

});

注意:在这种情况下使用triggerHandler而不是很重要,允许您使用返回的对象。triggertriggerHandlerjqXHR

于 2013-03-14T18:23:07.133 回答