Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在触发器(';单击';)完成触发后执行操作?_Javascript_Jquery_Sharepoint - Fatal编程技术网

Javascript 在触发器(';单击';)完成触发后执行操作?

Javascript 在触发器(';单击';)完成触发后执行操作?,javascript,jquery,sharepoint,Javascript,Jquery,Sharepoint,我管理SharePoint网站,对基础代码的访问权限有限;但是,我可以在页面加载后通过JavaScript进行操作。一直在使用jQuery和SPSServices 我有一个自定义按钮,我正在添加到表单中;它覆盖了页面上的标准“save”按钮,因此我可以在保存/关闭之前执行一些其他ajax操作。这很好: $('#the_save_button').hide(); $("#my_custom_save_button").click(function() { // do some custo

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

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

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

$("#my_custom_save_button").click(function() {
    // do some custom stuff first
    $('#the_save_button').trigger('click'); // 
    window.close();
}
项目保存并触发
窗口.close()
。伟大的不过,现在我宁愿不关闭窗口,而是设置
window.location.href
。。。但是,当我这样做时,页面会在
触发器('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";
}
我尝试过使用
窗口。setTimout
但是
$(“#保存按钮”)。触发器('click')
本身有一个内置的重定向


关于如何解决这个问题,您有什么想法吗?

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

$("#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
而不是
triggerHandler
非常重要,
triggerHandler
允许您使用返回的
jqXHR
对象。

您可能需要握住我的手一点:这对我来说很有意义,直到
return$.ajax({…})我返回的
{…}
是什么?很明显有些东西属于那里,但我不知道是什么。微笑。这正是你的要求。例如,
$.post(url,handler)
$.get(url,handler)
$.ajax({url:url,success:handler})
无论您已经在使用什么。从我在线阅读的内容来看,它看起来像是
preventDefault()
按照它所说的做。。。但我需要默认动作来开火;我不想完全压制它。我实际上无法重新创建它正在做的事情,因为它是如何硬编码的。。。我需要延迟我自己的location.href,只要
window.close()
正在延迟它。您可以删除该行,如果您正在使用它,它将替换
return false