我正在使用IE11,JavaScript和SharePoint2013。有一个主页打开一个新表单选项卡(NewForm.aspx
(添加或编辑选项卡表单(EditForm.aspx
(来编辑记录。
当用户保存在"新表单"选项卡中时,它将保存数据,刷新主页并关闭"新表单"选项卡。
当用户保存在"编辑表单"选项卡中时,它保存数据,刷新主页,刷新编辑表单选项卡并留在该编辑表单选项卡记录上。
这与下面提供的代码非常有用,除非用户通过SP功能区中的"附加文件"按钮附加文件。它进入保存点击事件,击中window.addEventListener
并跳过它。将用户默认回到SP库AllItems.aspx
列表。
我尝试将代码仅在"保存单击"中放置,而不是将代码放在the nunload事件侦听器中,但是附件不会保存到项目中。
我尝试捕获文件附加事件($('input[id=attachOKbutton]')
(并添加一个toferload侦听器。
再次,即使用户附加文件,也要保存记录并留在"编辑"选项卡上。
$(function() {
$('input[value=Save]').click(function() {
window.addEventListener("beforeunload", function(event) { //does not go in here if file is attached
var idxForm = location.pathname.indexOf("NewForm.aspx");
if( idxForm >= 0 ) { //NewForm - Saving a new record
window.opener.location.reload(); //Refresh calling page
window.close();
}
var idxForm2 = location.pathname.indexOf("EditForm.aspx")
if( idxForm2 >= 0 ) { //EditForm - Saving an update to a existing record
window.opener.location.reload(); //Refresh calling page
history.go(-1);
location.reload(true);
}
});
});
});
实际结果:带有附件的记录保存,并且用户定向到SP库AllItems.aspx
,或者用户停留在EditForm.aspx
选项卡上,但没有使用附加的附件更新记录。
所需的/预期结果:在用户保存而无需添加附件的情况下,执行与此操作完全一样……呼叫页面已更新,更新了编辑页面,并且用户停留在编辑页面上。当用户还添加附件时,这需要发生。
最终在带有editform url的保存事件上设置了一个会话cookie,并在allitems.aspx中对其进行测试,因此,如果true,它将重定向到特定的编辑记录页面。