`
sunxboy
  • 浏览: 2871238 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

基于prototype的易用表单验证(轉)

阅读更多
简介

基本的方式是在表单发生onsubmit事件的时候,遍历表单所有元素的class属性而执行需要验证。如果验证失败,则显示验证建议并阻止表单提交。

DEMO:http://tetlaw.id.au/upload/dev/validation/valid.html

下载:http://tetlaw.id.au/upload/dev/validation/validation1.5.3.zip

首先嵌入javascript库,一般写入header里面(注意写代码的时候把全角的<>换成半角的):
<script src="prototype.js" type="text/javascript"></script>
<script src=”validation.js” type=”text/javascript”></script>

然后像下面一样写表单元素,在class属性中写入需要的验证:<input class="required validate-number" id="field1" name="field1" />

最后通过如下的方式通过form对象或者form的id来激活验证

<script type="text/javascript">
     new Validation('form-id'); // OR new Validation(document.forms[0]);
</script>

它里面内置了大量的检验,但是也有包含自己定制检验代码的扩展。

验证时也避免了验证通过css属性设置display:none的区域或者元素的子元素。这种方式可以保证只能得到在form中是可见的且class的属性值为required的区域。
选项

下面是一个加入验证元素的可用的类清单:

   1. required (非空白)
   2. validate-number (合法的数:比如33,3.3)
   3. validate-digits (仅是数字)
   4. validate-alpha (仅是字母)
   5. validate-alphanum (仅是数字和字母)
   6. validate-date (合法的时间)
   7. validate-email (合法的Email地址)
   8. validate-url (合法的URL)
   9. validate-date-au (日期规则; dd/mm/yyyy)
  10. validate-currency-dollar (合法的美元值)
  11. validate-one-required (至少一个多选/单选项被选择 - 见后*)

*为了使用validate-one-required验证符,你必须把该类名只放入到一个checkbox/rediao按钮(最后一个可能是最合适)且所有的input元素应该处于一个父元素之下,比如div元素。这种方式下验证库能够找到所有的checkbox/rediao按钮且放置验证提示在父元素的底部从而使其出现在一组checkbox/radiao按钮的后面。

当验证初始化时,可以通过可选项{stopOnFirst:ture}来实现停止在第一个验证失败的行为。Demo的例子都是默认的。如果设置了,提交表单时第一个验证失败的提示马上就显示了。

<script type="text/javascript">
     new Validation('form-id',{stopOnFirst:true});
</script>

也可以通过可选项{immediate:true}来实现离开一个验证区域时立即进行验证。这发生在表单所有元素的onblur事件上。

在默认情况下验证库给表单的onsubmit事件增加了一个监听器,当验证失败的时候阻止这个事件的进行。如果设置可选项{onSubmit:false},它就不会阻止了。通过这种方式,可以手动的调用自己的javascrip验证函数。

在默认情况下验证库使出现错误的第一个验证域获取焦点。可以通过可选项{focusOnError:false}使它不这样做。

也可以通过可选项{useTitles:true}来使验证器使用表单元素的title属性作为验证错误的提示信息。

通过可选项{onFormValidate:yourFunction;onElementValidate:yourFunction}来设置回调函数。

onFormValidate在表单验证执行之后被调用,获取两个参数:验证结果(true或者false)和表单的符号。onElementValidate在每个表单元素验证之后被调用,也获取两个参数:验证结果(true或者falsh)和表单元素符号。

可以创建自己的页面验证通知元素来替代验证器的错误信息。当脚本创建提示元素,它首先寻找匹配‘advice-’+validate-class- name+‘-’+element.id的元素,如果找不到则寻找匹配’advice-’+element.id的元素。如果表单元素没有id属性将匹配 name属性。如果它找到元素将使他显示。例如在Demo中看Donation这个域。你制作一个普通的验证通知元素,使它的样式为 display : none。

如果也在也面的头部嵌入来自Scriptaculous的文件effect.js,就可以控制验证通知的显示的渐隐渐显效果。<script src="effects.js" type="text/javascript"></script>
CSS Hooks

和上面的验证CSS类一样,验证库用CSS类来指明验证的状态:validation-failed和validation-passed。

这个验证通知元素有一个validation-advice的类,id属性匹配下面这个规则:‘advice-’+validation-class-name+‘-’element.id

所以如果域birthdate用validation-date验证类,则验证通知元素的id为advice-validation-date-birthday。
Javascript API

默认下Javascript类把一个事件观察器绑定到表单的onsubmit事件。如果你喜欢通过自己的javascript提交表单,你依旧可以像下面这样检验表单:

<script type="text/javascript">
    var valid = new Validation('form-id', {onSubmit:false});
    var result = valid.validate();
</script>

实力方法validate()将返回true或者false。

这个Javascript类有一个实例函数可以reset所有的验证域:

<script type="text/javascript">
    var valid = new Validation('form-id');
    valid.reset();
</script>

注意这不是reset整个表单而是所有的验证域。

validation类也有一些可以用来独立使用的静态方法:Validation.validate([element OR element id] [, options])

这用所有当前的验证类验证域(或id指的域)。也可以通过可选项{useTitle:true}使域验证器使用元素的标题属性值来作为错误通知信息。

可以通过下面的方式运行一个特殊的验证一个域或者域值。Validation.get('validator-name').test(value [, element])

可以像这样来增加自己的验证器:

Validation.add('class-name', 'Error message text', function(value [, element]) {
     return /* do validation here */
});

例如这事一个内置的验证器:

Validation.add('validate-alpha', 'Please use letters only (a-z) in this field.', function (v) {
     return Validation.get('IsEmpty').test(v) ||  /^[a-zA-Z]+$/.test(v)
});

当增加一个新的验证器时,它被通过以CSS类名为关键字加入到一个静态的验证方法组中。必须通过表单元素的class属性来应用自己定制的验证函数.

可以使用Validation.addAllThese() 按照如下的方式比较容易的添加多个验证函数:

Validation.addAllThese([
     ['required', 'This is a required field.', function(v) {
       return !Validation.get('IsEmpty').test(v);
     }],
     ['validate-number', 'Please use numbers only in this field.', function(v) {
       return Validation.get('IsEmpty').test(v) || !isNaN(v);
     }],
     ['validate-digits', 'Please use numbers only in this field.', function(v) {
       return Validation.get('IsEmpty').test(v) ||  !/[^\d]/.test(v);
     }]
]); 

这是通过一个每个元素是有三个元素[className, error, function]的数组的数组。

ajaxcn.org上有一个应用的例子,可以看看http://ajaxcn.org/space/start/2006-05-22/1
 
分享到:
评论

相关推荐

    Ajax最全页面验证-基本prototype框架

    本文将深入探讨Ajax在表单验证中的应用,特别是基于Prototype框架的实现方式,以及动态验证的重要性。 一、Ajax基础 Ajax的核心是通过JavaScript与服务器进行异步通信,无需刷新整个页面就能获取或更新数据。它由...

    ASP基于Prototype的Ajax无刷新登录实例

    ASP基于Prototype的Ajax无刷新登录实例是一个非常适合初学者学习AJAX技术的应用案例。在这个实例中,我们将探讨如何在ASP(Active Server Pages)环境中利用Prototype JavaScript库实现无刷新的用户登录功能,同时...

    【JS相关插件】 强大的表单验证插件VanadiumJS

    VanadiumJS就是这样一款专门针对表单验证的JavaScript插件,它以其灵活性、易用性和强大的功能在开发者中受到广泛欢迎。 **1. 功能特性** - **实时验证**:VanadiumJS允许开发者定义一系列验证规则,这些规则会在...

    Really easy field validation with Prototype 1.5.3 中文扩展版

    "Really easy field validation with Prototype 1.5.3 中文扩展版"是一个针对Prototype JavaScript库的前端验证插件,旨在简化网页表单的数据验证过程。这个工具以其简单易用和强大的功能著称,并且提供了对多语言的...

    Prototype-1.pdf

    - **表单验证**:利用Prototype的DOM操作API进行表单字段的验证和错误提示。 #### 六、Prototype框架的学习资源 - **官方文档**:最权威的学习资源,包含详细的API文档和示例代码。 - **在线教程**:网络上有很多...

    easyValidation

    **描述:“easyValidation是一个利用Prototype JavaScript库构建的验证框架,它为前端开发提供了简便且强大的表单验证功能。”** 在Web应用程序中,表单验证是必不可少的一部分,它确保用户输入的数据符合预期的...

    介绍ajax开发框架的书《Prototype and Scriptaculous quickly》

    - **表单验证**:利用Prototype的DOM操作能力,可以轻松实现客户端表单验证。 - **动态内容加载**:通过Ajax技术,可以在不刷新整个页面的情况下加载新的内容。 - **交互式元素**:例如弹出窗口、拖拽功能等,都可以...

    jquery+prototype 源码 资料 插件合集

    例如,图片轮播(滑动门)、日期选择器、表单验证等,大大丰富了jQuery的应用场景。 1. UI组件:如jQuery UI提供了一系列界面组件,如对话框、拖放、排序等。 2. 图表库:如jQuery Flot、Chart.js用于绘制图表,...

    prototype.js_1.6_中文文档

    10. **实例应用**:文档中包含丰富的示例代码,展示了Prototype在实际项目中的应用,如动态加载内容、表单验证、复杂用户交互等场景,帮助开发者加深理解并迅速上手。 通过学习和实践《prototype.js 1.6 中文文档》...

    表单的验证

     本文介绍了如何利用 Prototype.js JavaScript 库在表单中结合 Ajax 代码来解决常见的用户体验问题。  简单的 Ajax 表单提交 基于XML的异步JavaScript,简称AJAX,是当前Web创新(称为Web2.0)中的一个王冠。...

    Practical Prototype and script.aculo.us

    - **表单增强**:通过表单验证、自动完成等功能提升用户体验。 - **结合使用的优势**: - **协同工作**:Prototype为script.aculo.us提供了坚实的基础,而script.aculo.us则进一步扩展了Prototype的功能边界,...

    验证插件vali.js

    vali.js是一款强大的前端验证插件,它为开发者提供了简单易用的API,帮助实现高效且用户体验良好的验证功能。这款插件在2016年2月1日发布的版本(vali20160201)具有一定的历史,但其核心理念和设计思路依然对当前的...

    prototype.js 1.4版开发者手册

    - **表单验证**: 对表单输入进行实时验证,减少用户错误。 - **拖放操作**: 构建拖放功能,使用户能够更直观地操作页面元素。 #### 七、未来展望 - **持续维护**: 虽然 prototype.js 已经不再频繁更新,但其稳定的...

    Prototype学习资料

    10. **Form**: 包含了一系列与表单相关的功能,如数据验证和操作,提高了表单处理的效率。 11. **Event**: 简化了事件处理,提供了一套跨平台的事件封装机制,便于事件监听和触发。 12. **Position**: 提供了元素...

    AJAX 验证框架13个

    7. JSValidate - 基于Prototype和Scriptaculous的验证框架,提供简洁的API进行表单验证,但目前仍处于测试阶段。 8. Field validation with Prototype - 结合Prototype和Scriptaculous,提供了丰富的内置验证规则和...

    prototype1.6API;jquery1.4API;css2.0API;html5.0API

    例如,`&lt;canvas&gt;`可以通过JavaScript绘图API创建交互式图形,而`&lt;form&gt;`的`required`属性可以实现表单验证。 这些API和标准共同构成了现代Web开发的基石。Prototype和jQuery简化了JavaScript编程,CSS2.0提供了丰富...

    LiveValidation 中文版

    LiveValidation 是一个轻量级的JavaScript框架,专为前端表单验证而设计。它使得在用户输入数据时实时验证表单字段成为可能,从而提供了更流畅、更友好的用户体验。无需等待用户提交表单,就能立即获取反馈,减少...

    40个轻量级JavaScript库[整理].pdf

    - **wForms**:提供表单验证、同步和条件判断,简化JavaScript表单处理。 - **Validanguage**:一个集成逻辑的验证框架,支持全局、单个表单或对象设置,有HTML-like和面向对象两种API。 - **LiveValidation**:...

Global site tag (gtag.js) - Google Analytics