[英]extending email validation in extjs
我在 6.0.1.250 版本的 ExtJs 中内置了以下用户注册表单。 我有一个电子邮件字段,它接受.co
、 .com
直到四个字符。 我需要处理最近的tlds
并希望覆盖电子邮件验证逻辑。 我尝试使用validator
并应用正则表达式,但regexText
不支持国际化。 如何扩展email
验证。 我正在使用 6.0 版本的 extjs 框架。 下面是用户窗体的代码片段
Ext.define('myApp.view.users.NewUserForm', {
extend: 'Ext.panel.Panel',
xtype: 'newuser',
title: '<span class="red-label">*</span>'+ l10n('new-user'),
items: [{
xtype: 'textfield',
fieldLabel: '<span class="red-label">*</span>' + l10n('name'),
name: 'username',
maxLength: 80,
allowBlank: false
}, {
xtype: 'textfield',
inputType: 'password',
fieldLabel: '<span class="red-label">*</span>' + l10n('password'),
name: 'password1',
vtype: 'password',
initialPassField: 'password2',
allowBlank: false,
maskRe: /[^ ]/
}, {
xtype: 'textfield',
fieldLabel: '<span class="red-label">*</span>' + l10n('confirm-password'),
vtype: 'password',
inputType: 'password',
name: 'password2',
initialPassField: 'password1',
allowBlank: false,
maskRe: /[^ ]/
}, {
xtype: 'textfield',
fieldLabel: '<span class="red-label">*</span>' + l10n('e-mail-address'),
name: 'emailAddress',
vtype:'email',
allowBlank: false
}, {
xtype: 'textarea',
fieldLabel: l10n('description'),
name: 'userDescription'
}]
});
您可以像这样覆盖电子邮件验证 vtype:
Ext.define(null, {
override: 'Ext.form.field.VTypes',
email: function (value) {
return /^(")?(?:[^\."\s])(?:(?:[\.])?(?:[\w\-!#$%&'*+/=?^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,10}$/.test(value);
}
});
我采用了默认的电子邮件正则表达式并进行了更改,以便它允许域名包含 2 到 10 个字符。
编辑
如果您使用 Sencha CMD,则有一个特殊的overrides
文件夹,您应该在其中放置您的覆盖。 因此,您可以创建一个名为Vtypes.js
的文件,将代码放在那里,然后在Vtypes.js
sencha app refresh
后就可以了。 如果不这样做 - 应该在使用实际 vtype 之前基本上执行覆盖。 您的Application.js
可能有一个名为applyOverrides
的方法,然后首先从您的启动方法中调用它。
我们可以使用这种简单的方法解决上述问题:
{
xtype: 'textfield',
fieldLabel: '<span class="red-label">*</span>' + l10n('e-mail-address'),
name: 'emailAddress',
regex : /^(")?(?:[^\."])(?:(?:[\.])?(?:[\w\-!#$%&'*+\/=?\^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,
allowBlank: false
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.