昨天一同事问我如何在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. 【python学习-2】python起步必备

    1.python缩进 python 缩进是tab,还是空格呢?都可以,可以是一个tab,也可以是4个空格,但是最重要的是整个python脚本的缩进必须统一,否则会报错. 2.代码注释 python注释 ...

  2. “百度杯”CTF比赛 九月场 YeserCMS

    打开题目 进入后是一个cms,但肯定的是这个cms不叫yesercms 于是我们开始随便翻翻,寻找信息,后台我也看了除了一个登陆界面,就没有其他的提示信息. 最后在文档下载的评论栏里发现,这个cms的 ...

  3. Atom-同步设置

    Atom-同步设置 参考博客 CNBLOG First 首先呢,如果我们想要通过Atom的设置和插件的话,我们需要这个一个Atom插件. PS: 因为Gist被墙的原因,所以需要***才行,我挂了ss ...

  4. Tecnomatix Process Designer & Process Simulate用法

    1. 删除项目 在AdminConsole->Project Action中,点击Delete project即可.

  5. HDU5919 SequenceⅡ

    从后向前建主席树,以位置为下标建树,然后查询区间出现次数的第k/2大即可. 复杂度O(nlogn) #include<bits/stdc++.h> using namespace std; ...

  6. CTSC被虐记

    退役前写写破事乐呵乐呵..(雾 Day0 愉快的没有分到另一个宾馆...但是是个单间...而且居然是大床房...难以置信, 试机向BeiYe学习了一发Gedit的外部工具, 试到一般好像都走了..只剩 ...

  7. PHP 获取IP地址位置信息「聚合数据API」

    聚合数据 提供了[查询IP所属区域]的服务接口,只需要以 GET 请求的方式向 API 传入 IP地址 和 APPKEY 即可获得查询结果. 这里的难点主要在于如何通过PHP获取客户端IP地址,以及如 ...

  8. slf4j 和 log4j合用的(Maven)配置

    简述: 添加logger的日志输出,下面是配置信息供备忘   步骤: 1. 在Maven的porn.xml 文件中添加dependency如下 <dependency> <group ...

  9. .net加载失败的程序集重新加载

    在.net程序中,程序集是Lazy加载的,只有在用的时候才会去加载,当程序集加载失败时,会触发AppDomain.AssemblyResolve的事件,在这个事件中,我们甚至还可以进行补救,从别得地方 ...

  10. 各种版本的ST-LINK仿真器

    1.ST官方正式出版了两种仿真器:ST-LINK.ST-LINK/V2,其他型号(ST-LINK II,ST-LINK III,…)要么是国内公司生产,要么是开发板自带的:2.在ST官网ST-LINK ...