昨天一同事问我如何在sharepoint2013的NewForm.aspx页面上添加一个 save and new的button。实现save 和new的功能,save的功能和默认的save按钮效果一至。

效果如图:

这里的思路如下:

1)用juqery来动态添加一个saveandnew的button

2)新建按钮的click事件将要调用默认save 按钮的click方法

3)新按钮的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函数的覆盖是在 “保存新建 ”按钮事件里面,所以 当我进入页面后 直接点击 “保存” 按钮 页面跳转到AllItems.aspx,直接点击“保存新建” 按钮跳转到NewForm.aspx页面,但是 如果 点击“保存新建” 按钮时, 客服端 有error的时候,当我们修改数据后 点击“保存” 按钮时,这个时候就有问题(页面跳转到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']")[];
var tableSave = $(btnsave).parents(".ms-toolbar").eq();
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 > && !window.btnsaveAndNew) {
window.GetUrlKeyValue = window.savefun;
}
}, );
</script>

有不对的地方 还请大家拍砖

Sharepoint2013 列表的NewForm 页面添加一个 保存新建 按钮的更多相关文章

  1. Sharepoint2013 列表的NewForm 页面加入一个 保存新建 button

    昨天一同事问我怎样在sharepoint2013的NewForm.aspx页面上加入一个 save and new的button.实现save 和new的功能.save的功能和默认的save按钮效果一 ...

  2. jsp页面添加一个集合数组到action(用序列化提交)

    页面的js //点击a标签增加删除 var i=0; $("#a").on("click",function(){ var $newtr = $("& ...

  3. magento产品成功添加到购物车后跳转到不同页面 添加 add to cart 按钮

    1 添加产品到购物车成功后是跳转到购物车页面或不跳转.这个在后台可以设置 system -> configuration -> After Adding a Product Redirec ...

  4. 在html页面添加一个隐藏域,并渲染一个需要保存的数值,在js中需要再获取,而不影响页面结构

    <div style="display:none">可以将需要保存的数值放在文本内容中,也可以放在标签的属性当中, 如果放在文本内容中,注意换行后 \n 的存在< ...

  5. angular js 页面添加数据保存数据库

    一.编写实体类Controller层返回数据使用 package entity; import java.io.Serializable; public class Result implements ...

  6. Bootstrap方法为页面添加一个弹出框

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 【Telerik】实现列表单元格中添加复选框,进行状态(是、否)判断

    前台界面: 需求:实现对每条细则是否必备进行判断,必备就勾选,否则不勾选. 首先:要保证列表GridView是可编辑的(IsReadOnly=false) 表格代码 其次:单元格的数据绑定要保证是双向 ...

  8. sharepoint 2010 页面添加footer方法 custom footer for sharepoint 2010 master page

    转:http://blog.csdn.net/chenxinxian/article/details/8720893 在sharepoint 2010的页面中,我们发现,没有页尾,如果我们需要给页面添 ...

  9. 在Magento System Configuration页面添加配置项

    以 Jp_Coupon 模块为例: 目标: 在 System configuration 页面添加一个 JP tab, 在JP中添加 Coupon section, 然后给 Coupon sectio ...

随机推荐

  1. forof循环

    一.语法 1.遍历数组 let myArr=[1,2,3,4,5]; for (let ele of myArr) { console.log(ele); } let myArr=[1,2,3,4,5 ...

  2. BZOJ.2456.mode(绝对众数)

    题目链接 \(Description\) 限制空间(只能保留两个变量),求给定n个数中出现次数超过\(\frac{n}{2}\)的数. \(Solution\) 维护两个变量,\(now\)和\(cn ...

  3. hdu 5652 India and China Origins(二分+bfs || 并查集)BestCoder Round #77 (div.2)

    题意: 给一个n*m的矩阵作为地图,0为通路,1为阻碍.只能向上下左右四个方向走.每一年会在一个通路上长出一个阻碍,求第几年最上面一行与最下面一行会被隔开. 输入: 首行一个整数t,表示共有t组数据. ...

  4. BZOJ4045 : [Cerc2014] bricks

    首先求出B和W的个数,如果只出现了一种那么直接输出sum(k). 否则依次扫描,能割就割,时间复杂度$O(n)$. #include<cstdio> #define N 100010 ty ...

  5. JDK版本的特性

    1. 2.JDK1.5增加的是: (1) 泛型与枚举类型(枚举类型是静态,常量.里面也可以包含构造方法,成员方法,但是构造方法一定是私有的. 适合枚举的是 有限数据,封装特定的数据,), (2)注解( ...

  6. MAC下安装Homebrew 和 @权限的问题

    MAC下安装Homebrew和 @权限的问题 1.Homebrew简介: Homebrew是一个包管理器,用于安装Apple没有预装但你需要的UNIX工具.(比如著名的wget). Homebrew会 ...

  7. 应用通信-方案一:RestTemplate

    @RestController public class ClientController { @Autowired private LoadBalancerClient loadBalancerCl ...

  8. oracle 删除字段中空格

    update  sales_report set region =  REGEXP_REPLACE(region,  '( ){1,}', '')

  9. [Go] ok 判断 汇总

    1.判断 类型 类似于 JavaScript 中 typeof 和 Java 中 instanceof var a interface{} newA, ok := a.(string) // 如果 o ...

  10. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...