【开发】Form Validate 表单验证 扩展应用
目录:
★、文本输入框(easyui-textbox)
★、数字框(easyui-numberbox)
★、时间(easyui-datebox)
★、文本域(easyui-textbox easyui-validatebox)
★、下拉框(easyui-combobox)
特别说明:
验证机制的关闭和启用。可以采用 data-options="novalidate:true" 先关闭元素的验证机制,再在表单提交之际开启验证。这样可以避免用户在第一次看到表单时就全显示红色提示的情形。
示例代码如下:
1、HTML声明:
|
<input class="easyui-combobox" name="Operator" required="true" missingmessage="请选择一项" data-options="novalidate:true, valueField: |
|
或者 <th> <label>字节数:</label> </th> <td> </td> |
2、JS验证:(灰色部分可以去除)
|
// "分配任务"保存 $btnPreAssignSave_GeneralTasks.click(function () { $('.validatebox-text').validatebox('enableValidation').validatebox('validate'); var validate = $maintainForm.form('enableValidation').form('validate'); if (!validate) { return false; } |
注意,在验证阶段要先“开启验证”(enableValidation),再“执行验证”(validate)。
参考示例:
http://www.jeasyui.net/plugins/167.html
http://www.jeasyui.net/demo/419.html
★、文本输入框(easyui-textbox)
|
<input class="easyui-textbox" type="text" name="BookName" validtype="length[ 0, 150 ]"/> |
一般只需限定输入字符的长度即可
★、数字框(easyui-numberbox)
包括整数、小数,以及数字大小范畴的限定。
|
<tr> <th> <label>起始页码:</label> </th> <td> <input class="easyui-numberbox" name="BeginPageNum" min="0"max="10000000" precision="0" required="true" missingmessage="请填写 起始页码(0--10000000)" /> </td> <th> <label>结束页码:</label> </th> <td> <input class="easyui-numberbox" name="EndPageNum" min="0"max="10000000" precision="0" required="true" missingmessage="请填写 结束页码(0--10000000)" /> </td> </tr> |
可以限定数字的大小范围,precision 属性用来限定小数点位数,required确保必填。
自定义验证:在实际业务中,起始页码和结束页码之间可能有这样一个规则“确保结束页码大于(>)起始页码”,这时只需调用BiggnerPageNumThanTarget 自定义扩展,传入所在表单的 id 和相比较元素的 name,以及为第 3 个参数撰写合适的验证消息即可:
|
<tr> <th> <label>起始页码:</label> </th> <td> <input class="easyui-numberbox" name="BeginPageNum" min="0" max="99000000" precision="0" /> </td> <th> <label>结束页码:</label> </th> <td> <input class="easyui-numberbox" name="EndPageNum" min="0" max="99000000" precision="0" validtype="BiggnerPageNumThanTarget['preAssignForm','BeginPageNum', '请确保 结束页码 大于 起始页码']" /> </td> </tr> |
以上针对“结束页码”调用了 BiggnerPageNumThanTarget 这一自定义扩展,当用户输入结束页码的数值较小时,将提示用户“请确保 结束页码 大于 起始页码”。
★、时间(easyui-datebox)
验证重点:
1、在页面的脚本中加入验证扩展 SmallerDateThanTarget 和
B
iggnerDateThanTarget
2、在时间控件中加入 validtype 属性
3、数组型参数,第一个参数是表单 id,第二个参数是用来比较的目标控件的 name,务必注意。
(只要是通过表单 id 和其元素 name 就可以定位一个元素的情形,就不要再为单独元素定义 id ,保持表单的简洁,即显式呈现的东西一定要存在确切意义。)
|
validtype="SmallerDateThanTarget['preAssignForm','EndDate']" |
详细阐述:
主要是对时间范围的验证。
可以使用扩展函数来限定开始时间和结束时间之间的范围。
往往 起始时间要偏小,而且是小于 结束时间,所以起始时间调用 SmallerDateThanTarget方法;
与此同时,结束时间势必就要大一些,而且是大于 起始时间,所以结束时间调用
B
iggnerDateThanTarget 方法。
|
<tr> <th> <label>开始时间:</label> </th> <td> <input class="easyui-datebox" name="BeginDate" editable="false" required="true" missingmessage="请填写时间" /> </td> <th> <label>结束时间:</label> </th> <td> <input class="easyui-datebox" name="EndDate" editable="false" required="true" missingmessage="请填写时间" validtype="BiggnerDateThanTarget['preAssignForm','BeginDate','请确保 结束时间 大于 开始时间']" /> </td> </tr> |
|
$.extend($.fn.validatebox.defaults.rules, { BiggnerDateThanTarget: { validator: function(currentElementValue, param) { if(!$.isArray(param)) { window.alert("调用验证器时所传参数必须是数组格式:validtype=\"DateboxCheck['preAssignForm','BeginDate', '提示信息']\" "); return false; } var scopeElementID = param[0]; var targetElementName = param[1]; var targetElement = $("#" + scopeElementID).find(":input[name='" + targetElementName + "']").val(); return currentElementValue >= targetElement; }, message: '{2}' } }); |
|
$.extend($.fn.validatebox.defaults.rules, { SmallerDateThanTarget: { validator: function(currentElementValue, param) { if(!$.isArray(param)) { window.alert("调用验证器时所传参数必须是数组格式:validtype=\"DateboxCheck['preAssignForm','BeginDate', '提示信息']\" "); return false; } var scopeElementID = param[0]; var targetElementName = param[1]; var targetElement = $("#" + scopeElementID).find(":input[name='" + targetElementName + "']").val(); return currentElementValue <= targetElement; }, message: '{2}' } }); |
★、文本域(easyui-textbox easyui-validatebox)
验证重点:
1、注明 validtype="length[0, 400]" 即可。
详细阐述:
文本域不需要使用 <textarea />来表达,在 easyUI 层面上其定义仍然是 textbox,只是 multiline:true 罢了。
同时指定两个类就可以:easyui-textbox 和 easyui-validatebox
|
<tr> <th> <label>备注:</label> </th> <td colspan="3"> <input class="easyui-textbox easyui-validatebox" validtype="length[0, 400]" data-options="multiline:true" style="width: 520px; height: 60px;" name="Notes" /> </td> </tr> |
★、下拉框(easyui-combobox)
验证重点:
1、在页面的脚本中加入验证扩展 SelectionRequired 。
2、在下拉框元素中加入 validtype 属性,数组参数为其自身 id 和 验证消息 。
|
validtype="SelectionRequired['ddlOperatorPreAssign', '请选择一项']" |
详细阐述:
下拉框有时总会包括一个默认项,有时则没有。
它也支持 必填 验证,往往还需要在数据加载成功时默认选中第一项。
比如在初始化时,可以很容易地取得数据,判断起来也方便:
|
<tr> <th> <label>录入员:</label> </th> <td colspan="3"> <input class="easyui-combobox" name="Operator" id="ddlOperatorPreAssign" editable="false" validtype="SelectionRequired['ddlOperatorPreAssign', '请选择一项']" data-options="novalidate:true, valueField:'Name', textField:'FullName', url:'/PMIS/PMIS_EnteringTasks_Assignment/GetUserInCurrentDept', onLoadSuccess: function(data){ if (data) { $(this).combobox('setValue',data[0].Name); } } "> </td> </tr> |
|
$.extend($.fn.validatebox.defaults.rules, { // 下拉框验证 SelectionRequired: { validator: function(currentElementText, param) { // 对于下拉框,验证组件只能默认获取其文本值,需要自己重新提取其 Value。 if(!$.isArray(param)) { window.alert("调用验证器时所传参数必须是数组格式:validtype=\"SelectionRequired['ddlOperatorPreAssign', '提示信息']\" "); return false; } var targetElement = $("#" + param[0]); var targetElementValue = targetElement.combobox('getValue'); console.group("开始验证下拉框"); console.info("该验证是确保下拉框的选项值(Value)不是 null 对象、不是 \"0\"、也不是 \"\" "); console.info("下拉框元素 id = " + param[0]); console.info("当前选中项 value = " + targetElementValue); console.info("当前选中项 value 的类型是 " + typeof targetElementValue); console.info("当前选中项 text = " + currentElementText); console.info("当前选中项 text 的类型是 " + typeof currentElementText); if(targetElementValue != null && targetElementValue != "0" && targetElementValue != "") { console.info("验证成功"); console.groupEnd(); return true; } console.warn("验证失败"); console.groupEnd(); }, message: '{1}' } }); |
针对下拉框值得注意的一点,不要使用表单的 clear() 方法,这样会使得下拉框的值成本空白,应使用表单的 reset() 方法。
【开发】Form Validate 表单验证 扩展应用的更多相关文章
- 基于jQuery的Validate表单验证
表单验证可以说在前端开发工作中是无处不在的~ 有数据,有登录,有表单, 都需要前端验证~~ 而我工作中用到最多的就是基于基于jQuery的Validate表单验证~ 就向下面这样~ 因为今天有个朋 ...
- ASP.NET MVC Jquery Validate 表单验证的多种方式
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- 【干货】Laravel --Validate (表单验证) 使用实例
前言 : Laravel 提供了多种方法来验证应用输入数据.默认情况下,Laravel 的控制器基类使用ValidatesRequests trait,该trait提供了便利的方法通过各种功能强大的验 ...
- [转]ASP.NET MVC Jquery Validate 表单验证的多种方式介绍
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- Jquery Validate 表单验证的多种方式
ASP.NET MVC Jquery Validate 表单验证的多种方式 在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体 ...
- thinkphp图片上传+validate表单验证+图片木马检测+缩略图生成
目录 1.案例 1.1图片上传 1.2进行图片木马检测 1.3缩略图生成 1.4控制器中调用缩略图生成方法 1.案例 前言:在thinkphp框架的Thinkphp/Library/Thin ...
- jQuery-easyui和validate表单验证实例
jQuery EasyUI 表单 - 表单验证插件validatebox 使用时需要向页面引入两个css文件如下: <link rel="stylesheet" href=& ...
- summernote富文本编辑器配合validate表单验证无法进行表单提交的问题
1.使用summernote富文本编辑器提交图片到服务器 在使用bootstrap中,我们用到了summernote富文本编辑器,使用summernote将图片上传到服务器中,参考我的上篇文章http ...
- validate表单验证-单独验证
今天编写一个表单验证程序,我来说一下今天遇到的坑:程序不是通过submit按钮提交验证的,是在自己写的一个方法中提交的,出现了表单无法验证的情况.然后我就了解了一下jquery validate的验证 ...
随机推荐
- js中动态载入css js样式
js中动态载入css样式,方法如下: //<link rel="stylesheet" type="text/css" href="http:/ ...
- 一种从JSON数据创建Java类的高效办法
<一种从JSON数据创建Java类的高效办法> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs JSON格式的数据经常会遇到,比如调用Web服 ...
- oracle强制使用索引
select /*+ INDEX(表名,索引名称) */ col_1,...from xxx
- 【Away3D代码解读】(三):渲染核心流程(渲染)
还是老样子,我们还是需要先简略的看一下View3D中render方法的渲染代码,已添加注释: //如果使用了 Filter3D 的话会判断是否需要渲染深度图, 如果需要的话会在实际渲染之前先渲染深度图 ...
- 【Stage3D学习笔记续】真正的3D世界(二):显示模型
虽然我们进入真3D世界了,但是上一章的Demo仍然是显示的一个平面,尽管我们的平面在3D空间中旋转可以看出一点3D透视的效果,但是既然是真3D,就要拿出点3D的样子来! 如果要显示3D模型,我们就要告 ...
- C++学习笔记(十四):模板
模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性.模版可以分为两类,一个是函数模版,另外一个是类模版.Java中对应的技术称为泛型. 函数模板 ...
- Android内存中的图片
图片在内存中的大小 Android.graphics.Bitmap类里有一个内部类Bitmap.Config类,在Bitmap类里createBitmap(intwidth, int height, ...
- iOS8 CLLocationManager 、CLGeocoder获取地理位置
最近在ios8.0使用CLLocationManager定位服务,发现老不能定位,查看设置菜单中的项也是处于未知状态.想起之前都有一个弹出框提示用户是否允许定位,这次一直没有出现了.原来ios8.0下 ...
- iOS 时间戳转换为时间
NSString *str=";//时间戳 NSTimeInterval time=[str doubleValue]+;//因为时差问题要加8小时 == 28800 sec NSDate ...
- nape.geom.MarchingSquares
Nape中的MarchingSquares类很简单,只有一个静态函数run,不过这对绘制那些简单的形状来说,已经足够了(当然MarchingSquares能做的不只这些).下面是这个run方法的结构: ...