`
bluespring
  • 浏览: 20274 次
  • 来自: ...
社区版块
存档分类
最新评论

配置超简单的Jquery form validate验证框架(修改与扩展)

阅读更多

用过不少form验证框架,一般难逃三个缺点,编码复杂、使用条件苛刻、难以扩展修改。 一直以来都很头疼,这两天有空逛javaeye发现matychen发的一个效验框架帖子,一看配置超简单眼前一亮(类似javaeye的配置方式),再一看效验提示是浮动并可配置的。就觉得这个框架稍作修改就是我梦寐以求的效验框架。

 

本人想将这个框架做成适合各种环境的通用插件,大家有什么意见及发现什么bug欢迎来拍砖

 

修改的地方:

 

 

可以配置是否启用提示框的箭头(个人觉得很难看)

 

 

可以配置提示框出现的方式,是一直显示还是当鼠标over时显示

这是最需要的修改,原来的提示框到处都是,严重影响了用户体验

qq截图截不到鼠标,请参考demo

 

 

可以配置出错时候field的样式,默认是红色两像素的边框

如果效验的是checkbox及radio,该样式添加在效验元素的父节点上


 

还需要继续改进的地方

 

有时间的时候我会继续扩展两个地方

提示框鼠标跟随

提示框圆角(当前圆角是用css写的,只能用于Firefox下)

 

 

 

说了很多废话,切入主题,且看例子

 

首先引入样式文件及js文件(最新版效验框架是基于jquery1.4的)

<link rel="stylesheet" href="css/validationEngine.jquery.css" type="text/css" media="screen" title="no title" charset="utf-8" />
<link rel="stylesheet" href="css/template.css" type="text/css" media="screen" title="no title" charset="utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>
<script src="js/jquery.validationEngine-cn.js" type="text/javascript"></script>
<script src="js/jquery.validationEngine.js" type="text/javascript"></script>
 

注册要效验的form,是用默认配置

$("#formID").validationEngine()
 

ok

js编码完成

 

接下来是在要效验的inputs上加配置(class上)

<input value="" class="validate[required,custom[noSpecialCaracters],length[0,20]]" type="text" name="user" id="user" />

 required:必填

custom[noSpecialCaracters]:使用的正则(jquery.validationEngine-cn.js中定义)

length[0,20]:长度限制

 

效验编码配置完成,是不是超简单。当然如果需要一些特殊的效验需要自定义效验方法及扩展

 

 

异步效验部分由于没有php环境所以没有测试过,请有环境的朋友帮忙测试下。谢谢!

 

 

官方地址

http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

 

matychen原帖

http://www.iteye.com/topic/555489

 

这里没有自己做提示汉化,引用matychen的汉化文件jquery.validationEngine-cn.js,感谢matychen

 

 

  • 大小: 11.5 KB
  • 大小: 12 KB
  • 大小: 11.6 KB
分享到:
评论
15 楼 bluespring 2010-05-05  
<div class="quote_title">Angel_Night 写道</div>
<div class="quote_div">只是一个层而已<br><br>至于 "高度" "一直显示" "悬浮" 这些细节 我感觉不是验证框架需要做的事..<br><br>只需要把值传过去 至于如何显示 可以自行操纵这个div</div>
<p><br><br><br>我有时间会考虑加入这个功能,实现这个功能需要在配置的时候多一项</p>
<pre name="code" class="html">&lt;s:textfield name="prefix" cssClass="validate[required,custom[onlyLetter],length[0,5]]" _label="前缀" &gt;&lt;/s:textfield&gt;</pre>
<p>因为提示层中显示多个input的提示信息,需要加于区别</p>
14 楼 rendong 2010-05-05  
我也在一直使用这个验证组件,更改了错误显示方式,但是没有修改,当form在一个iframe中,边上没有足够的空间显示错误提示的问题。
13 楼 bluespring 2010-05-05  
Angel_Night 写道
select*from爱 写道
我们是这样搞的
<input type="password" rep="正则表达式" err="密码不能为空"/>
当然,要引入自定义的校验js,仿jquery校验插件写的



可能你们公司的美工和我们的差不多吧

特别排斥 class中加入与样式无关的东西...

都是老美工了..
jQueryUI ext对于他们来说 那是程序员应该写的..

所以也接受不了class里面的奇怪内容..



我也一直不明白javaeye的效验为什么配置在class中,我看了也别扭。
我只有用过struts2标签,可以输出自定义的属性比如说rep什么的,难道说有些标签不能输出自定义属性,所以必须写在已有的属性class中?
12 楼 Angel_Night 2010-05-05  
只是一个层而已

至于 "高度" "一直显示" "悬浮" 这些细节 我感觉不是验证框架需要做的事..

只需要把值传过去 至于如何显示 可以自行操纵这个div
11 楼 bluespring 2010-05-05  
Angel_Night 写道
统一层提示的话

可以预先给一个 层的id
如果有需求 可以把错误信息 送到指定的层中


可能我们公司比较怪吧..宁可功能不够好 也要灵活 能够应付各种情况 因为全公司java .net都用一个验证框架..

所以楼主如果真的想完善 可以考虑一下这些内容


你指的是一直显示的提示层,而不是悬浮显示的对吧?

这个首先要考虑2个问题,给定容器的高宽不够时怎么办?怎么让提示与输入框对应(当前效验框架中并没有配置输入框label)并且让使用者一看就明白?

这两个问题解决不好的话做不到通用及好用
10 楼 Angel_Night 2010-05-05  
select*from爱 写道
我们是这样搞的
<input type="password" rep="正则表达式" err="密码不能为空"/>
当然,要引入自定义的校验js,仿jquery校验插件写的



可能你们公司的美工和我们的差不多吧

特别排斥 class中加入与样式无关的东西...

都是老美工了..
jQueryUI ext对于他们来说 那是程序员应该写的..

所以也接受不了class里面的奇怪内容..
9 楼 Angel_Night 2010-05-05  
统一层提示的话

可以预先给一个 层的id
如果有需求 可以把错误信息 送到指定的层中


可能我们公司比较怪吧..宁可功能不够好 也要灵活 能够应付各种情况 因为全公司java .net都用一个验证框架..

所以楼主如果真的想完善 可以考虑一下这些内容
8 楼 bluespring 2010-05-05  
select*from爱 写道
我们是这样搞的
<input type="password" rep="正则表达式" err="密码不能为空"/>
当然,要引入自定义的校验js,仿jquery校验插件写的


建议你重新规划 reg内容及err内容。
像原来这种如果有两种验证错误信息怎么办?

可以这样 rep="[正则1,正则2]" err="[提示1,提示2]"


7 楼 bluespring 2010-05-05  
Angel_Night 写道
新的错误显示确实比以前好多了


我又翻了一下我们公司自己写的验证框架 用起来很麻烦啊...
一个验证邮箱要写这么多...还是这个方便
<input class="form-textbox" type="text" name="Email" id="Email" bqname="电子邮箱" onfocus="creatediv(this);allFocus(this,'邮箱是您找回密码的重要途径,请认真填写.')" onKeyPress="EmailKeyPress()" onblur="if(BetweenExit(this,3,30)) EmailExit(this)"> 


如果真的要继续做下去 可以完善一下细节

把一些业务验证补全(身份证..中国的手机验证..座机验证等等..)不必每次都传正则

还有灵活一点..比如我公司这个 错误提示 就可以选择 使用 alert 单独层 统一层 来提示



希望楼主能努力继续下去..
虽然关注的人少点 才开始而已嘛


ok,我会添加一些中国特色的正则

但错误提示上。alert只能用于submit时,输入错误时alert用户体验不好。而统一层提示的话,布局是个问题,要考虑影响及破坏原有的页面布局。如果你有好的解决建议,我会继续完善

谢谢你的意见及鼓励
6 楼 select*from爱 2010-05-05  
我们是这样搞的
<input type="password" rep="正则表达式" err="密码不能为空"/>
当然,要引入自定义的校验js,仿jquery校验插件写的
5 楼 Angel_Night 2010-05-05  
新的错误显示确实比以前好多了


我又翻了一下我们公司自己写的验证框架 用起来很麻烦啊...
一个验证邮箱要写这么多...还是这个方便
<input class="form-textbox" type="text" name="Email" id="Email" bqname="电子邮箱" onfocus="creatediv(this);allFocus(this,'邮箱是您找回密码的重要途径,请认真填写.')" onKeyPress="EmailKeyPress()" onblur="if(BetweenExit(this,3,30)) EmailExit(this)"> 


如果真的要继续做下去 可以完善一下细节

把一些业务验证补全(身份证..中国的手机验证..座机验证等等..)不必每次都传正则

还有灵活一点..比如我公司这个 错误提示 就可以选择 使用 alert 单独层 统一层 来提示



希望楼主能努力继续下去..
虽然关注的人少点 才开始而已嘛
4 楼 bluespring 2010-05-05  
<p>添加了取值区间效验能力</p>
<p> </p>
<p>配置为</p>
<p>region[4,90.5]</p>
<p>判断数值是否是大于
4小于90.5</p>
<p> </p>
<p>如果有人对这个效验框架感兴趣我会继续完善下去,比如提示框鼠标跟随,比如IE圆角等等</p>
3 楼 bluespring 2010-05-05  
<div class="quote_title">Angel_Night 写道</div>
<div class="quote_div">老早以前现在项目中用它 <br><br>发现 不支持function级别的验证..很麻烦 只能进行一些简单的数据验证..</div>
<p><br><br>demo中就有function验证,请仔细看看。<br>只是它的错误提示逻辑写的不方便,不但要写function,还要添加提示消息到$.validationEngineLanguage.allRules<br><br>demo中的function验证<br><br>function定义</p>
<pre name="code" class="js">function validate2fields(){
if($("#firstname").val() =="" || $("#lastname").val() == ""){
return true;
}else{
return false;
}
}</pre>
<p> </p>
<p>提示配置(稍后讨论)</p>
<pre name="code" class="js">"validate2fields":{
    "nname":"validate2fields",
    "alertText":"* You must have a firstname and a lastname"}
} </pre>
 
<p> </p>
<p>验证配置</p>
<pre name="code" class="html">&lt;input value=""  class="validate[required,custom[onlyLetter],length[0,100],<span style="color: #ff0000;">funcCall[validate2fields]</span>] text-input" type="text" id="lastname" name="lastname"  /&gt;</pre>
<p> </p>
<p>提示不一定要加到资源js文件jquery.validationEngine-cn.js中,可以使用下面的方式添加</p>
<pre name="code" class="js">jQuery.extend($.validationEngineLanguage.allRules,{"validate2fields":{
    "nname":"validate2fields",
    "alertText":"* You must have a firstname and a lastname"}
});</pre>
<p> 需要注意的是这段代码必须加入在你自定义的jQuery.ready中,因为</p>
<pre name="code" class="js">$.validationEngineLanguage.allRules</pre>
<p>
也是用jQuery.ready加载的,你不能在它初始化之前扩展它</p>
<p> </p>
<p> </p>
2 楼 Angel_Night 2010-05-05  
老早以前现在项目中用它

发现 不支持function级别的验证..很麻烦 只能进行一些简单的数据验证..
1 楼 bluespring 2010-05-05  
都没人提个意见说个看法,这世道

相关推荐

    jquery_validate验证框架

    **jQuery Validate验证框架** jQuery Validate是一个非常流行的JavaScript库,它为HTML表单提供了强大的验证功能。这个插件简化了客户端的表单验证过程,使得在网页应用中实现数据验证变得快速且易于实施。它适用于...

    jQuery validate框架的个性化验证

    jQuery Validate 是一个强大的客户端验证插件,用于在用户提交表单前进行实时验证。这个框架大大简化了HTML表单的验证过程,提供了丰富的内置验证规则和可扩展的自定义验证功能,使得表单验证更加人性化和高效。 1....

    jquery-form-validate

    `jQuery Form Validate` 是一个基于 jQuery 的强大表单验证框架,它为开发者提供了一种简洁、高效的方式来验证用户在网页表单中输入的数据。这个框架使得开发者无需编写复杂的JavaScript代码,就能实现对表单字段的...

    jQuery.validate 用法

    源码中,`Validator`类是整个验证框架的基石,它包含了验证规则、错误消息、错误容器等关键属性,以及各种验证方法和事件处理。 源码中的`addMethod`允许开发者扩展新的验证方法,`valid`方法则是验证表单元素的...

    JQueryValidate验证说明

    首先,使用`jQuery Validate`需要引入相关的文件,包括`jquery.validate.js`作为核心验证框架,`additional-methods.js`包含了一些额外的验证方法,`messages_cn.js`用于本地化消息,以及`jquery.validate.css`定义...

    jquery.validate是jquery旗下的一个验证框架

    `jQuery Validate`通过与jQuery的无缝集成,使得验证用户输入变得简单快捷。它可以处理各种常见的验证需求,如必填项、电子邮件格式、URL、日期等,并且允许开发者自定义验证规则。此外,该插件还支持多语言,满足...

    jQuery.validate.js

    1. **内置验证规则**:jQuery.validate.js内建了一系列常见的验证规则,如非空、邮箱格式、电话号码、URL等,只需简单配置就能实现基本的验证功能。 2. **错误提示**:当用户输入不符合规则时,jQuery.validate.js...

    jquery-validate前台验证框架,带详细使用方法

    根据给定的信息,本文将详细介绍jquery-validate前端验证框架的相关知识点,包括其基本概念、使用方法以及部分具体的验证规则实现。 ### 一、jquery-validate简介 `jquery-validate`是一款基于jQuery的强大表单...

    jquery.validate.js验证框架_帮助_手册_文档_API_接口

    ### jQuery.validate.js 验证框架知识点详述 #### (一)可选项(options) 在使用 `jQuery.validate.js` 验证框架时,可选项是配置验证行为的重要部分。这些选项允许开发者自定义验证过程中的多种行为,包括调试...

    jquery validate验证示例

    在这个“jquery validate验证示例”压缩包中,很可能包含了 `jQuery Validate` 插件的核心文件以及一些示例代码,帮助开发者快速理解和使用这个插件。 首先,`jQuery Validate` 的核心功能包括: 1. **基本验证**...

    比较好用的 FormValidate

    标题中的“比较好用的 FormValidate”指的是一个用于表单验证的工具或库,它可能是一个JavaScript框架,旨在帮助开发者更方便、高效地实现前端或后端的表单数据验证。在网页开发中,表单验证是必不可少的部分,它...

    jquery 前端验证框架

    **jQuery前端验证框架详解** 在Web开发中,前端验证是必不可少的一个环节,它能有效防止无效数据提交到服务器,提高用户体验并减轻服务器负担。jQuery,作为一款广泛使用的JavaScript库,提供了许多工具和插件来...

    jquery-validate 表单验证

    `jQuery Validate` 是一个强大的 JavaScript 库,专为 jQuery 框架设计,用于实现高效、灵活且易于使用的表单验证。它可以帮助开发者创建各种复杂的验证规则,确保用户输入的数据符合预设的要求,从而提高网站的安全...

    jquery validate依赖包及其帮助文档.rar

    《jQuery Validate插件详解与应用指南》 在Web开发领域,表单验证是不可或缺的一环,它能够确保用户输入的数据符合预设的规则,从而提高数据的准确性和系统的稳定性。jQuery Validate是一个强大的JavaScript库,专...

    很不错的验证框架jquery

    标题中的“很不错的验证框架jquery”指的是jQuery Validation Plugin,这是一个非常流行且功能强大的JavaScript库,专门用于HTML表单验证。jQuery本身是一个轻量级的JavaScript库,极大地简化了DOM操作、事件处理和...

    jquery.validate.js表单验证[借鉴].pdf

    总的来说,`jQuery.validate.js` 提供了一个强大且灵活的框架,可以帮助开发者创建高效且用户体验良好的表单验证机制,从而确保收集到的数据准确无误。结合其丰富的自定义选项和预定义规则,可以适应各种复杂的验证...

    Struts 结合 Validate框架验证详解

    总之,结合Struts和Validate框架可以实现高效且可扩展的数据验证机制。通过分离验证逻辑与业务逻辑,开发者可以更专注于应用的核心功能,同时保证了用户输入数据的正确性。理解并熟练运用这些验证工具,将有助于提升...

    jquery验证框架学习

    4. **自定义规则**:可以扩展验证框架,添加自定义验证规则,以满足特定的业务需求。 5. **错误提示**:框架会自动处理错误消息的显示,你可以自定义错误元素的样式和位置。 6. **提交事件处理**:验证框架会在表单...

    jquery_validate之学习

    jQuery Validate是一个强大的JavaScript库,它为jQuery框架提供了简单易用的表单验证功能。这个插件以其灵活性和丰富的定制选项,深受开发者喜爱。本文将深入探讨jQuery Validate的使用方法、核心功能和常见应用场景...

    jQuery验证框架

    ### jQuery验证框架详解 #### 一、概述 jQuery Validation Plugin 是一个非常强大的验证插件,它可以帮助开发者轻松地实现客户端表单验证功能。此插件是基于jQuery开发的,因此可以充分利用jQuery的强大功能来简化...

Global site tag (gtag.js) - Google Analytics