昨天一同事问我怎样在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的更多相关文章

  1. Sharepoint2013 列表的NewForm 页面添加一个 保存新建 按钮

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

  2. 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态

    查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...

  3. 调试台自动多出现一个'&#65279;' ,我 用uploadify上传图片时,在给页面写入一个返回值为图片名称的变量的值的时候值的前面始终多出现一个'&#65279;'

    对你有助请点赞,请顶,不好请踩------送人玫瑰,手留余香! 15:54 2016/3/12用uploadify上传图片时,在给页面写入一个返回值为图片名称的变量的值的时候值的前面始终多出现一个' ...

  4. 嵌入式表单字段中的内容可能被server更改以删除不安全的内容。是否要又一次载入您的页面以查看保存结果?

    嵌入式表单字段中的内容可能被server更改以删除不安全的内容.是否要又一次载入您的页面以查看保存结果?         近期有朋友问到,当他在SharePoint首页上进行编辑时.插入一段代码. 完 ...

  5. h5页面 video暂停播放 视频控件 以及当前页面只有一个可以播放效果

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  6. 查找常用字符(给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。)

    给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表. 例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 ...

  7. Python3执行DOS命令并截取其输出到一个列表字符串,同时写入一个文件

    #执行DOS命令并截取其输出到一个列表字符串,同时写入一个文件#这个功能很有用listing=os.popen('ipconfig').readlines()for i in listing: pri ...

  8. 在页面左右一个悬浮div兼容IE6 IE7 8 9 Firefox chrome

    在页面左右一个悬浮div兼容IE6 IE7 8 9 Firefox chrome #identifier-pannel { bottom: 345px; margin-left: 512px; pos ...

  9. 请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框。程序可以判断出用

    请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框.程序可以判断出用 户点击的是“确认”还是“取消”. 解答: <HTML> <HEAD> <TI ...

随机推荐

  1. Codeforces Round #415 (Div. 2) 翻车啦

    A. Straight «A» time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  2. 84. Spring Boot集成MongoDB【从零开始学Spring Boot】

    至于MongoDB网上有很多相关的资料,所以在这里不进行过多的介绍,我们在这里主要是介绍下如何将mongodb与spring boot结合使用.本节大纲: (1) 准备工作: (2) 新建一个mave ...

  3. 九度oj 题目1125:大整数的因子

    题目描述: 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k. 输入: 若干个非负整数c,c的位数<=30每行一个c,当c=-1时中止 ( ...

  4. 算法复习——凸包加旋转卡壳(poj2187)

    题目: Description Bessie, Farmer John's prize cow, has just won first place in a bovine beauty contest ...

  5. Wing IDE 6.0 算号器注册机代码

    我开发Python时喜欢用Wing IDE, 然后最近发现Wing IDE升级到6.0版本了, 但是之前能在5.1上用的算号器代码不能用在6.0上了, 所以就上网搜搜是否有相关算号器, 果然, 找到了 ...

  6. 使用HttpClient实现对第三方服务器的请求并接受返回数据

    /* * 创建日期 2017-4-7 * * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */ package com.enfo.int ...

  7. 如何解决"The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path"

    今天我在eclipse上搭建新项目时,莫名其妙的出现这个错误,如下: The superclass "javax.servlet.http.HttpServlet" was not ...

  8. Lumia 1020 诞生:诺基亚拍照技术的一次狂欢

    它在手机发展史上留下一长串坚实的脚印,拥趸遍及世界.它从巅峰滑落,但从未放弃向过去致敬的机会. 2002 年,作为世界上第一款内置摄像头拍照手机,诺基亚 7650 的横空出世将手机行业硬生生推上一个新 ...

  9. Python入门--6--今天抄袭人家一篇日志--numpy这个

    Numpy NumPy的主要对象是同种元素的多维数组. 这是一个所有元素都是同一类型.通过一个正整数元祖索引的元素表格(通常元素都是数字) 在Numpy中维度(dimensions)叫做:轴 轴的个数 ...

  10. Virtualization基础

    官方文档学习 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Virtualization_G ...