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の代わりに使用することtriggerが重要であり、返されたオブジェクトtriggerHandlerを使用できます。jqXHR

于 2013-03-14T18:23:07.133 に答える