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