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>

有不正确的地方 还请大家拍砖

时间: 2024-11-22 17:08:46

Sharepoint2013 列表的NewForm 页面加入一个 保存新建 button的相关文章

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

昨天一同事问我如何在sharepoint2013的NewForm.aspx页面上添加一个 save and new的button.实现save 和new的功能,save的功能和默认的save按钮效果一至. 效果如图: 这里的思路如下: 1)用juqery来动态添加一个saveandnew的button 2)新建按钮的click事件将要调用默认save 按钮的click方法 3)新按钮的click事件后页面跳转主要取决于url的Source参数,所以我们必须改写获取该参数的方法,该参数的读取是在i

js 正则表达式 验证 ip列表--详情:页面中一个输入框,可输入1个或多个IP,使用英文逗号隔开

var isIp = function (){     var regexp = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;                  return function(value){         var valid = regexp.test(value);         if(!valid){//首先必须是 xxx.xxx.xxx.xxx 类型的数字,如果不是,返回false             return false;

表单提交时如何将错误信息传递到页面中,并且保存原来提交数据

曾经何时,你还有我或许都在困惑,如何方便的将验证不通过的表单信息再返回到前台页面,例如我注册一个账号,辛辛苦苦填写了N多项,一个格式验证没有通过,一切都需要充填,虽然Ajax可以解决这个问题,但是我们总不能把所有表单提交都弄成ajax,更何况有若干人就是没事把javascript给禁止了.哎哎,好了解决方案来了,下面以用户登录为例,说说我的解决方案. 服务器端用nodejs实现: login.html 简单的提交表单 <form action="" id="loginF

sharepoint2013列表实现项目级权限控制

sharepoint2013列表实现项目级权限控制 分类: sharepoint 20132014-07-07 22:30 108人阅读 评论(0) 收藏 举报 sharepoint工作流sharepoint工作流列表sharepoint2013 在sharepoint2013权限控制中,有时候会涉及更精细化的控制,比如在列表中考虑控制列表项的权限. 下面就举例介绍一下如何进行设置. 例子:1.具有了一个可用的网站集 2.新建一个服务客户列表 3.具备了用户的权限级别(因为列表项目级权限只和当前

嵌入式表单字段中的内容可能被服务器更改以删除不安全的内容。是否要重新加载您的页面以查看保存结果?

嵌入式表单字段中的内容可能被服务器更改以删除不安全的内容.是否要重新加载您的页面以查看保存结果? 最近有朋友问到,当他在SharePoint首页上进行编辑时,插入一段代码.完工后保存就遇到了这个问题. 无论选"是"或"否",保存完毕后在设计视图中都看不到效果,查看代码视图,对应的代码也被删除掉了. 这确实是很恼人,好不容易写了那么多东西,结果最后被SPD自己搞没了,如果之前备份了还好,否则,大半天的成果就不翼而飞了. 首先,关于这个问题的定性要清楚.它不是一个错误:

iOS快速实现一个保存记录的倒计时按钮

iOS开发中在登录.注册.找回密码等页面经常需要实现倒计时按钮,但是很多情况下用户点击倒计时按钮开始倒计时之后,再次进入页面,又可以再次点击,倒计时记录不会保留,虽然一般情况下服务端会再次校验,但是我们可以实现得更加严谨. ZXCountDownView 支持自动保存倒计时记录,即使退出当前控制器,重启App,倒计时仍然保留,支持多个不同控制器共用一个倒计时记录,例如登录.注册.找回密码页面共用一个倒计时记录,点击任意一个按钮倒计时记录将实时同步. ZXCountDownView 安装 通过Co

页面table的每行都有一个&lt;input type=&#39;button&#39; /&gt;,如何实现点击按钮在按钮下方弹出一个div,点击空白消失

\ <input id="test" type="button" />/*按钮*/ <div id="tanchu"></div> <script language="javascript"> $(document).ready(function(e) { $("#test").click(function(e) { $("#tanchu"

Python List extend()方法-用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

描述 extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表). 语法 extend()方法语法: list.extend(seq) 参数 seq -- 元素列表. 返回值 该方法没有返回值,但会在已存在的列表中添加新的列表内容. 实例 以下实例展示了 extend()函数的使用方法: #!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc', 123]; bList = [2009, 'manni']; aLi

多个jsp页面共享一个js对象

今天,在项目中遇到一个问题,两个js页面要共享一个就js对象.js全局变量和静态变量都不行,其他苦逼的小农们就不要去强求了.而LZ又不想用cookie来存放,一是不安全,二个人喜好.最后发现一种超级方法来解决这个困扰,那就是用window.top['_CACHE']来存放这个变量,即可实现,不同Jsp页面直接的对象共享. var share = { /** * 跨框架数据共享接口 * @param {String} 存储的数据名 * @param {Any} 将要存储的任意数据(无此项则返回被查