Sharepoint2013 列表的NewForm 页面加入一个 保存新建 button
Posted wzzkaifa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sharepoint2013 列表的NewForm 页面加入一个 保存新建 button相关的知识,希望对你有一定的参考价值。
昨天一同事问我怎样在sharepoint2013的NewForm.aspx页面上加入一个 save and new的button。实现save 和new的功能。save的功能和默认的save按钮效果一至。
效果如图:
这里的思路例如以下:
1)用juqery来动态加入一个saveandnew的button
2)新建button的click事件将要调用默认save button的click方法
3)新button的click事件后页面跳转主要取决于url的Source參数。所以我们必须改写获取该參数的方法,该參数的读取是在init.debug.js的GetUrlKeyValue方法。
改动方式例如以下:
window.savefun = GetUrlKeyValue;
window.GetUrlKeyValue = function (keyName, bNoDecode, url, bCaseInsensitive) {
if (keyName != "Source") {
return window.savefun(keyName, bNoDecode, url, bCaseInsensitive);
}
else {
return "/Lists/CustList/NewForm.aspx";
}
}
首先我须要把原先的GetUrlKeyValue方法保存起来。然后覆盖默认的GetUrlKeyValue方法。
这是的函数调用情况
因为GetUrlKeyValue函数的覆盖是在 “保存新建 ”button事件里面,所以 当我进入页面后 直接点击 “保存” button 页面跳转到AllItems.aspx,直接点击“保存新建” button跳转到NewForm.aspx页面,可是 假设 点击“保存新建” button时。 客服端 有error的时候。当我们改动数据后 点击“保存” button时。这个时候就有问题(页面跳转到NewForm.aspx页面而不是AllItems.aspx),找了非常久也没找到客服端真正验证的地方(假设大家知道的还请不吝赐教,反正不是后面这句代码 if (!PreSaveItem()) return false;if (SPClientForms.ClientFormManager.SubmitClientForm(\'WPQ2\')) return false),最后无赖仅仅好通过setInterval方法来检查页面是否有error信息,假设有 我们就把GetUrlKeyValue方法还原。
终于的代码例如以下:
<script type="text/javascript" src="/siteassets/js/jquery.js"></script> <script type="text/javascript"> $(document).ready(function () { var btnsave = $("input[id*=\'diidiosaveItem\']")[1]; var tableSave = $(btnsave).parents(".ms-toolbar").eq(0); var strsaveAndNew = \' <td class="ms-toolbar" nowrap="nowrap"><input type="button" value="SaveAndNew" id="btnsaveAndNew" /></td><td class="ms-separator"> </td>\'; $(strsaveAndNew).insertBefore(tableSave); window.savefun = GetUrlKeyValue; $("#btnsaveAndNew").click(function () { window.btnsaveAndNew = true; window.GetUrlKeyValue = function (keyName, bNoDecode, url, bCaseInsensitive) { if (keyName != "Source") { return window.savefun(keyName, bNoDecode, url, bCaseInsensitive); } else { return "/Lists/CustList/NewForm.aspx"; } } $(btnsave).click(); window.btnsaveAndNew = false; }); }); setInterval(function () { var errors = $("span[id^=\'Error_\']"); if (errors.length > 0 && !window.btnsaveAndNew) { window.GetUrlKeyValue = window.savefun; } }, 100); </script>
有不正确的地方 还请大家拍砖
以上是关于Sharepoint2013 列表的NewForm 页面加入一个 保存新建 button的主要内容,如果未能解决你的问题,请参考以下文章
带有常用按钮菜单栏的 Sharepoint 2013 列表视图
SharePoint 2013 - 在品牌页面中显示列表项的详细信息,而不是默认的 SharePoint 详细信息页面
如何通过 REST API 在另一台服务器上为 Sharepoint 2013 和 Sharepoint Online 运行的脚本中更新 SharePoint 列表?