jQuery EasyUI---validatebox 校验规则扩展


目录(?)
[+]

Web前端数据校验组件

Web项目中客户端与服务端的交互离不开Form表单,Form表单中最常用的元素莫过于input标签,input标签首先要用的肯定是text文本框啦!

input文本框允许用户任意输入,难免会会有用户输入一些不符合规定的数据,此时,在提交之前对数据校验是很有必要的,如果等到提交到服务端再校验就会大大降低用户体验啦。

前端校验有很多现成的组件,比较好用的有 EasyUI 的 validatebox 插件,提示界面做的相当友好,只是validatebox 默认提供的校验规则比较有限,有时我们需要添加自己的校验规则。

[javascript]  view plain  copy
  1. rules: {  
  2.             email:{  
  3.                 validator: function(value){  
  4.                     return ...?$/i.test(value);  
  5.                 },  
  6.                 message: 'Please enter a valid email address.'  
  7.             },  
  8.             url: {  
  9.                 validator: function(value){  
  10.                     return ...?$/i.test(value);  
  11.                 },  
  12.                 message: 'Please enter a valid URL.'  
  13.             },  
  14.             length: {  
  15.                 validator: function(value, param){  
  16.                     var len = $.trim(value).length;  
  17.                     return len >= param[0] && len <= param[1]  
  18.                 },  
  19.                 message: 'Please enter a value between {0} and {1}.'  
  20.             },  
  21.             remote: {  
  22.                 validator: function(value, param){  
  23.                     var data = {};  
  24.                     data[param[1]] = value;  
  25.                     var response = $.ajax({  
  26.                         url:param[0],  
  27.                         dataType:'json',  
  28.                         data:data,  
  29.                         async:false,  
  30.                         cache:false,  
  31.                         type:'post'  
  32.                     }).responseText;  
  33.                     return response == 'true';  
  34.                 },  
  35.                 message: 'Please fix this field.'  
  36.             }  
  37.         },  

自定义校验规则

添加新的校验规则时最好不要在EasyUI的源文件中进行,第一是避免因误操作而导致污染了EasyUi源码,更重要的是考虑到以后容易进行组件升级。所以最合理的办法是单独写自己的扩展文件。

比如:我在原有规则的基础上新增了以下三项校验,单独文件 easyui-extend-rcm.js:

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. (function($) {  
  2.     /** 
  3.      * jQuery EasyUI 1.4 --- 功能扩展 
  4.      *  
  5.      * Copyright (c) 2009-2015 RCM 
  6.      * 
  7.      * 新增 validatebox 校验规则 
  8.      * 
  9.      */  
  10.     $.extend($.fn.validatebox.defaults.rules, {  
  11.         idcard: {  
  12.             validator: function(value, param) {  
  13.                 return idCardNoUtil.checkIdCardNo(value);  
  14.             },  
  15.             message: '请输入正确的身份证号码'  
  16.         },  
  17.         checkNum: {  
  18.             validator: function(value, param) {  
  19.                 return /^([0-9]+)$/.test(value);  
  20.             },  
  21.             message: '请输入整数'  
  22.         },  
  23.         checkFloat: {  
  24.             validator: function(value, param) {  
  25.                 return /^[+|-]?([0-9]+\.[0-9]+)|[0-9]+$/.test(value);  
  26.             },  
  27.             message: '请输入合法数字'  
  28.         }  
  29.     });  
  30. })(jQuery);  

自定义规则使用方式

在<head>中除了引入EasyUI的文件之外,还要引入自己的扩展文件,顺序在EasyUI文件之后:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <pre name="code" class="javascript"><span style="font-size:18px;"><script src="#WEBROOT()/static/jseasyui/jquery.easyui.min.js" type="text/javascript" ></script>  
  2. <script src="#WEBROOT()/static/js/comm/easyui-extend-rcm.js" type="text/javascript"></script></span>  
 
 然后在Html中如下引用即可,一定要加Class 和 data-options两个属性: 
 

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <pre name="code" class="html"><span style="font-size:18px;"><div id="dlg" class="easyui-dialog" style="width:300px; height:300px; vertical-align: middle;" closed="true" title='添加中药' buttons="#dlg-buttons">  
  2.     <div id="editForm" style="background:'';padding:20px;width:200px;height:200px; display:none;">  
  3.         <form id="form" method="post">  
  4.             <div style="padding-left:16px;padding-top:20px;" hidden="true">  
  5.                 <input type="text" name="dlg_drugId" id="dlg_drugId" hidden="true" />  
  6.             </div>  
  7.             <div style="padding-top:10px;padding-left:40px;">  
  8.                 <label for="dlg_name">药物:</label>  
  9.                 <input type="text" name="dlg_name" id="dlg_name"  class="easyui-validatebox" readonly="readonly" />  
  10.             </div>  
  11.             <div style="padding-top:10px;padding-left:40px;">  
  12.                 <label for="dlg_price">单价:</label>  
  13.                 <input type="text" name="dlg_price" id="dlg_price"  <span style="color:#ff0000;">class="easyui-validatebox" data-options="required:true,validType:'checkFloat'"</span> />  
  14.             </div>  
  15.             <div style="padding-top:10px;padding-left:40px;">  
  16.                 <label for="dlg_purchase_price">进价:</label>  
  17.                 <input type="text" name="dlg_purchase_price" id="dlg_purchase_price"  <span style="color:#ff0000;">class="easyui-validatebox" data-options="validType:'checkFloat'"</span> />  
  18.             </div>  
  19.             <div style="padding-top:10px;padding-left:40px;">  
  20.                 <label for="dlg_stock">库存:</label>  
  21.                 <input type="text" name="dlg_stock" id="dlg_stock"  <span style="color:#ff0000;">class="easyui-validatebox" data-options="validType:'checkNum'"</span> />  
  22.             </div>  
  23.             <div style="padding-top:10px;padding-left:40px;" align="center">  
  24.                 <input type="button" value="保存" onclick="saveTCMDrugPublicMapped()" class="bt_style" />  
  25.             </div>  
  26.         </form>  
  27.     </div>  
  28. </div></span>  

 
 

数据校验显示效果

效果如下图所以:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值