`

Ext Vtype 表单验证实现登陆

    博客分类:
  • EXT
阅读更多
Ext Vtype 表单验证
2009-09-11 16:58
在ExtJS中,使用了四种自定义,分别是'alpha',alphanum,'email','url',分别用来验证表单中的值是否符合字母、字母数 字、电子邮件、URL等格式。但在实际应用中,我们需要验证的格式或者规则还是很多的。由于ExtJS是开源的框架,因此,我们可以扩展vtype的功 能,实现自定义的vtype。

    比如,在实战中,我们经常会遇到需要验证密码的问题,最常使用的,就是如何验证原密码跟重复密码是否一致的问题。为了实现这个功能,我们可以自定义一个vtype,命名为repetition。因此,或以编写扩展代码如下:


1 Ext.apply(Ext.form.VTypes, {
2     repetition: function(val, field) {
3      //代码逻辑在此
4     },
5     repetitionText: '两个指定组件的组件值不一样'
6 })



    Ext.apply方法,用以将新属性复制到原对象中,所以, 新的repetition,我们可以以一个JSON配置对象的形式,复制到Ext.form.VTypes中,借此扩展vtype的功能。注意,除了提供repetition的逻辑之外,你还需要提供一个repetitionText,用以实现当验证失败时,返回的错误信息,该信息会显示在组件的提示信息中。格式必须遵循vtypename + 'Text'的格式,所以,repetition的vtype,其验证失败信息,就是repetitionText。

    repetition验证函数也必须遵循一定的参数格式,一共需要提供两个参数,val参数,是宿主表单的的表单值,field是宿主表单自身,所以,我们可以快速地通过这两个参数,访问表单宿主及其表单值,以此来进行验证。

    接下来,可以编写实现逻辑如下:


1 Ext.apply(Ext.form.VTypes, {
2     repetition: function(val, field) {     //返回true,则验证通过,否则验证失败
3         if (field.repetition) {               //如果表单有使用repetition配置,repetition配置是一个JSON对象,该对象提供了一个名为targetCmpId的字段,该字段指定了需要进行比较的另一个组件ID。
4             var cmp = Ext.getCmp(field.repetition.targetCmpId);   //通过targetCmpId的字段查找组件
5             if (Ext.isEmpty(cmp)) {      //如果组件(表单)不存在,提示错误
6                 Ext.MessageBox.show({
7                     title: '错误',
8                     msg: '发生异常错误,指定的组件未找到',
9                     icon: Ext.Msg.ERROR,
10                     buttons: Ext.Msg.OK
11                 });
12                 return false;
13             }
14             if (val == cmp.getValue()) {  //取得目标组件(表单)的值,与宿主表单的值进行比较。
15                 return true;
16             } else {
17                 return false;
18             }
19         }
20     },
21     repetitionText: '两个指定组件的组件值不一样'
22 })



至此,扩展功能已经结束,我们可以在表单中,使用repetition验证了。


1             new Ext.form.FieldSet({
2                 title: '注册信息',
3                 autoHeight: true,
4                 checkboxToggle: true,
5                 labelWidth: 55,
6                 items: [
7                     new Ext.form.TextField({
8                         fieldLabel: 'Email',
9                         vtype: 'email'
10                     }),
11                     new Ext.form.TextField({
12                         inputType: 'password',
13                         id: 'pass1',
14                         maxLength: 6,
15                         fieldLabel: '输入密码',
16                         allowBlank: false
17                     }),
18                     new Ext.form.TextField({
19                         inputType: 'password',
20                         id: 'pass2',
21                         maxLength: 6,
22                         fieldLabel: '重复密码',
23                         allowBlank: false,
24                         vtype: 'repetition',  //指定repetition验证类型
25                         repetition: { targetCmpId: 'pass1' }  //配置repetition验证,提供目标组件(表单)ID
26                     })
27                 ]
28             })



运行效果如图:





验证失败时,出现的提示信息,是我们在定义vtype时,所设置的默认值“两个指定组件的组件值不一样”这样的文字,如果需要改成另外的提示信息,可以通过重写repetitionText字段实现。

Ext.form.VTypes.repetitionText = '输入的两次密码不一样';



运行效果如图:

注:图片放在附件中
分享到:
评论

相关推荐

    EXT 表单验证EXT 表单验证

    journeylin_新浪博客.html"、"ExtJS中表单验证使用自定义vtype示例 - 芒果奶茶的日志 - 网易博客.mht"和"Ext表单验证 - 天行健的日志 - 网易博客.mht"这样的资源,你可以深入理解EXT表单验证的具体实现和最佳实践。...

    EXT表单验证之TextField

    例如,对于`Ext_TextField表单验证.xls`文件,它可能是包含EXT表单验证示例的电子表格,详细列出了不同vtype的使用方法和效果,这对于学习和参考EXT表单验证非常有帮助。 总而言之,EXT表单验证中的TextField组件...

    Extjs验证表单 Extjs验证表单

    本文将深入探讨Extjs中的表单验证机制,包括错误信息提示方式、内置验证属性、Vtype验证以及自定义验证方法。 #### 二、Extjs 错误信息提示方式 在进行任何形式的验证之前,首先需要配置错误信息的提示方式。Extjs...

    Ext中xtype和vtype.

    在 Ext 中,xtype 和 vtype 是两个非常重要的概念,它们分别用于定义组件的类型和验证规则。 xtype 是 Ext 中的一种组件类型,它定义了组件的行为和外观。Ext 提供了许多内置的 xtype,例如 button、textfield、...

    Ext表单组件之textField

    3. `allowBlank`:设置是否允许字段为空,如果为false,则当字段为空时表单验证会失败。 4. `maxLength`:限制输入的最大字符数。 5. `vtype`:定义输入验证类型,例如'email'用于验证电子邮件格式。 6. `regex`:...

    Ext 添加功能form表单实例

    综上所述,这个实例展示了如何在Ext中创建一个完整的表单,包括表单的布局、字段的定义及验证、按钮及事件处理等多个方面。对于初学者来说,这是一个很好的学习资源,可以帮助他们快速掌握如何使用Ext构建复杂的Web...

    extjs表单验证特殊字符

    EXTJS表单验证主要依赖于`Ext.form.field.Base`组件,它是所有表单字段的基础类。每个表单字段都可以配置验证规则,通过`vtype`属性定义基本的验证类型,或者使用`validators`属性自定义验证函数。对于特殊字符的...

    JS表单验证数字字母汉字邮箱.pdf

    首先,表单验证通常通过监听用户的输入事件,然后检查输入值是否符合预设的规则来实现。在给定的代码片段中,使用了两种验证方式:正则表达式(regex)和VType。 1. **正则表达式验证**: 正则表达式是一种强大的...

    JS表单验证数字字母汉字邮箱.docx

    本篇文章将围绕"JS表单验证数字字母汉字邮箱"这一主题,详细介绍如何使用JavaScript进行表单验证,包括正则表达式(Regex)验证和VType验证。 首先,我们来看如何使用正则表达式进行验证。正则表达式是一种强大的文本...

    ext form小例子

    综上所述,“EXT form小例子”涵盖了EXTJS Form组件的基本用法和验证机制,特别是客户端验证和`Ext.form.Vtype`的扩展应用,对于理解和实践EXTJS表单开发具有很好的指导价值。通过深入学习和实践这些知识点,开发者...

    Jquery、YUI、ExtJs 三大javascript框架表单验证带提示功能的demo

    它的表单验证功能强大且全面,提供了内置的表单字段验证器,如`vtype`属性可以设置预定义的验证类型,如`email`、`url`等。另外,还可以通过`field.validator`定义自定义验证函数。ExtJS的错误提示系统允许开发者...

    EXT from培训教材

    首先,创建一个EXT表单非常简单,通过调用`Ext.form.Form`构造函数即可实现。例如: ```javascript var simple = new Ext.form.Form({ labelWidth: 75, // 标签宽度 url: 'save-form.php' // 提交表单的URL }); `...

    ext 的ppt ext 的ppt ext 的pptext 的pptext 的ppt

    表单是任何Web应用中收集用户输入的关键部分,而Ext JS提供了一套完整的工具来帮助开发者创建、验证和提交表单数据。 首先,我们注意到描述中提到了一些常见的问题,如Grid不显示数据,这可能由于JSON数据格式错误...

    Extjs表单常见验证小结

    总结来说,ExtJS表单验证提供了丰富的选项,从基础的空验证和简单的vtype验证,到自定义函数验证和正则表达式验证,几乎可以覆盖所有常见的验证需求。通过这些验证方式,开发者可以确保用户输入的数据既安全又符合...

    EXT dojochina文本框示例Ext.form.TextField.rar

    3. **验证**:EXT提供了内置的验证功能,可以设置`vtype`属性来进行简单的类型验证,比如邮箱、电话号码等。例如,验证邮箱格式: ```javascript var emailField = new Ext.form.TextField({ fieldLabel: '邮箱', ...

    ext用到的增删改查

    `hiddenName`属性用于指定提交时与后台交互的字段名,而`vtype`则可以定义字段的验证规则,例如`specialChar`可能是一种自定义的验证规则,确保输入符合特定格式。 `showUserForm`函数展示了添加用户信息的表单。这...

    ext js mvc

    Vtype是Ext JS中的验证类型,用于在表单字段输入时进行实时验证。开发者可以定义或使用内置的vtypes,如email、url等,确保用户输入的数据符合预设格式。例如,为一个文本字段设置vtype="email",将自动检查输入...

    EXT2.0中文教程

    把表单和输入控件都改成ext的样式。 4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 4.4. 起点高撒,从comboBox往上蹦 4.4.1. 凭空变出个comboBox来。 ...

    ext-3-TextField-sample.rar_ext_ext TextField_ext textfield inp

    - `vtype`: 验证类型,如email、url等,用于自动进行数据格式检查。 - `regex`: 正则表达式,自定义验证规则。 - `emptyText`: 输入框默认显示的提示文本,当输入框为空时显示。 3. **事件处理**: TextField...

Global site tag (gtag.js) - Google Analytics