在SharePoint的使用过程中,我们经常需要为表单页面做一些特殊处理,比如说新建页面的时候有多选项的字段,但是只能选择指定数量的选项,尤其在新闻列表或者调查列表等特殊场景中,广泛使用。

  下面,我们就演示一下,如何利用JavaScript脚本,在前台处理这样的问题;特别强调,如果User是比较熟悉Web开发的高手,熟悉各种浏览器提供的前台修改Html页面的工具的话,这样的方式就属于小儿科了,我们就需要在列表上绑定EventReceiver,强制不符合条件的数据,不能保存。

  创建示例需要的列表,这里主要定制新建页面,选择News Type的时候,不能超过2个选项。示例列表如下,只有Title、Body、News Type三个字段,还有列表库自带的字段。

  这里我们使用Jquery脚本,因为操作起来比JavaScript更加方便,我们添加脚本可以使用内容编辑器WebPart,或者使用SharePoint Designer直接打开SharePoint的NewForm.aspx页面,均可以。我们这里使用SharePoint Designer打开,因为写代码和修改起来都相对比较方便。

  同时,我们也演示一下如何使用内容编辑器添加脚本,方便大家进行不同的尝试,如下图:

  首先点击右上角小齿轮,如果没有这个按钮,说明你的权限只是访问者,需要有编辑页面权限的用户;点击编辑页面进入编辑状态。

  点击页面上的添加WebPart,选择内容编辑器WebPart,步骤如下图:

  我们首先会编辑这个WebPart,点击“Edit Web Part”,如下图:

  一般会编辑Title属性和Chrome Type,前者一般写清这个部件的作用,后者是去掉部件的标题和边框(我这里为了美观,去掉了中间宽和高的设置,大家别见怪);

  然后选中WebPart,点击Ribbon菜单上的编辑源,在里面添加代码即可,如下图:

  有时也需要点击“Click here to add new content”,才能看到上面的Ribbon,看不到的就试试吧。

  使用WebPart的方式就是上面的介绍了,下面我们使用SharePoint Designer添加脚本(脚本添加到Content Editor WebPart同样适用):

  打开SharePoint Designer,选中Open Site,如果之前已经打开过,可以在Recent Site里选择,即可:

  在Site name中填写我们的网站集地址,点击Open可以打开网站,可能会弹出登陆框需要登录,输入windows账号的用户名和密码(e.m:domain/linyu password);

  然后找到表单存在的位置,注意路径,如下图:

  右键需要修改的页面,在高级模式下编辑这个页面,如下图:

  一般会先添加Jquery的引用,然后编写脚本,如下图:

  下面是保存后的页面演示,只可以勾选两个选项,如下图:

  下面是另一种演示,就是可以勾选多个,但是不能保存,会提示(具体区别请参照脚本),如下图:

  完整的脚本部分,由于自己并不是专业的前端开发,可能脚本写的比较粗糙,大家见谅,如下:

 1 <script type="text/javascript">
 2 $(function(){
 3     //添加新的SaveButton,同时隐藏旧的SaveButton
 4     $("#onetIDListForm input[type='button'][value='Save']").before("<input type='button' class='newSaveButton ms-ButtonHeightWidth' value='Save'></input>").hide();
 5
 6     //如果选项大于2,就不让选择新的选项了
 7     $("#onetIDListForm input[type='checkbox'][id^='NewsType']").change(function(){
 8         if($("#onetIDListForm input[type='checkbox'][id^='NewsType']:checked").length > 2)
 9         {
10             $(this).removeAttr("checked");
11             alert("News Type选项不能超过2,如果需要新的选项,请去掉不需要的选项");
12             //$("#onetIDListForm input[type='checkbox'][id^='NewsType']:checked:first").removeAttr("checked");
13         }
14     });
15
16     //为新添加的SaveButton绑定click事件,如果选项大于2提示,如果不大于2,点击默认的SaveButton
17     $("#onetIDListForm .newSaveButton").click(function(){
18         if($("#onetIDListForm input[type='checkbox'][id^='NewsType']:checked").length > 2)
19         {
20             alert("News Type选项不能超过2,如果需要新的选项,请去掉不需要的选项");
21         }
22         else
23         {
24             $("#onetIDListForm input[type='button'][value='Save'][id$='SaveItem']").click();
25         }
26
27     })
28 });
29 </script>

  完整的代码截图,如下图:

后记

  其实,整个过程比较简单,最近发现很多人在问,如何在页面里添加WebPart,如何在WebPart添加脚本,怎么控制页面上的相关元素;所以,自己举一个简单的例子,给需要的人一个参考吧。

  不是什么高深的东西,但是也希望有一丢丢价值,觉得不错的,帮忙点个赞吧!

SharePoint 使用脚本为表单绑定事件相关推荐

  1. Vue的常用指令(v-html {{}}文本插值,v-bind绑定属性,v-if条件渲染,v-for列表渲染,v-on @ 事件绑定,v-model表单绑定)

    Vue的常用指令(文本插值,绑定属性,条件渲染,列表渲染,事件绑定,表单绑定) Vue 的介绍 Vue 是一套构建用户界面的渐进式前端框架. 只关注视图层,并且非常容易学习,还可以很方便的与其它库或已 ...

  2. mvvm 自动绑定_ZK的实际应用:MVVM –表单绑定

    mvvm 自动绑定 这是我们从头开始构建ZK应用程序的第二集. 上一篇文章介绍了使用MVVM将数据加载和呈现到表中. 在本文中,我们将向您介绍ZK MVVM的表单绑定. 目的 我们将构建一个" ...

  3. ZK的实际应用:MVVM –表单绑定

    这是我们从头开始构建ZK应用程序的第二集. 上一篇文章涉及使用MVVM将数据加载和呈现到表中. 在本文中,我们将向您介绍ZK MVVM的表单绑定. 目的 我们将构建一个"添加"功能 ...

  4. JavaScript基础(九)form表单、事件、3D

    form表单.事件.3D form表单 form表单操作 event事件对象 案例 事件冒泡 事件的绑定与解绑 键盘事件 默认事件 面试题 选项卡 javascript实现 jQuery实现 3D 3 ...

  5. React 表单与事件

    一个简单的实例 在实例中我们设置了输入框 input 值value = {this.state.data}.在输入框值发生变化时我们可以更新 state.我们可以使用 onChange 事件来监听 i ...

  6. Spirng MVC +Velocity 表单绑定命令对象

    通常,表单中的数据在提交之后可以通过Spring MVC的@RequestParam注解在控制器函数的参数列表中中提取出来,但是一旦表单数据过多的话,参数列表将会变得非常长,最好的解决方案是将表单中的 ...

  7. 表单绑定 v-model —— :value @input || v-model原理

    表单绑定 v-model  01-v-model的基本使用 <!DOCTYPE html> <html lang="en"> <head>< ...

  8. 开发测试技巧|辅助开发调试:goolge谷歌浏览器利用F12在控制台输入脚本实现表单自动填充

    一个开发测试技巧的指引和截图,利用google浏览器的F12调试和Console执行,注入JavaScript脚本实现表单的自动填充和测试. 执行的JS脚本. - 文本  隐藏/显示 function ...

  9. vue监控表单输入事件,正则验证手机号,邮箱

    vue监控表单输入事件,正则验证手机号,邮箱 <div class="input-name"><inputclass="input-type" ...

最新文章

  1. 求教关于NFS服务器的防火墙的设置
  2. linux远程桌面复制文件,SH,telnet,网络拷贝文件,putty,连接windows远程桌面终端,远程控制linux桌面...
  3. Netty详解(五):Netty TCP粘包 拆包
  4. img打 webpack_webpack打包html里面img后src为“[object Module]”问题
  5. adas记录仪app_4K旗舰丨盯盯拍MINI5智能行车记录仪荣耀新生!
  6. 把我的爱送给你――C#3.5(这题目似乎写错了)
  7. Stack Overflow 监控系统内部架构初探
  8. 被3整除判断准则的证明
  9. group by having执行顺序
  10. win10系统如何安装SQL2008?
  11. python做三维图片挑战眼力_查找「儿童大家来找茬图片」安卓应用 - 豌豆荚
  12. Vue(1706E)
  13. Android中gradle配置项packagingOptions简述
  14. 书到用时方恨少? 整理了一份初中、高中数学教材pdf 百度云
  15. RHCE第五天 磁盘分区和管理 永久挂载
  16. Java 单例模式实现
  17. 机器学习面试宝典200题!
  18. 小学校园IP网络广播-基于局域网的小学IP校园数字广播建设指南
  19. 免疫荧光染色一抗多克隆抗体与单克隆抗体的区别
  20. ICCV 2019 | VIPL实验室5篇录取论文详解

热门文章

  1. configparser操作配置文件
  2. java 对象的解释过程
  3. 移动平台自动化测试:appium(一)
  4. POJ 2315:Football Game(博弈论)
  5. 搜索技巧——持续更新
  6. ADO.NET中的五个主要对象
  7. 深入理解JavaScript闭包(closure) 【收藏】
  8. c++全局变量的正确声明
  9. uni-app实现上拉加载更多
  10. jquery ajax传值php,jquery ajax传值问题