升级到ExtJS3.2之后vtype=email或者其他的TextField在allowBlank : true的情况下提示“邮件格式错误”,查看源代码发现:
3.2中代码片段
getErrors: function(value) {
var errors = Ext.form.TextField.superclass.getErrors.apply(this, arguments);
value = value || this.processValue(this.getRawValue());
if(Ext.isFunction(this.validator)){
var msg = this.validator(value);
if (msg !== true) {
errors.push(msg);
}
}
if (!this.allowBlank && (value.length < 1 || value === this.emptyText)) { // if it's blank
errors.push(this.blankText);
}
if (value.length < this.minLength) {
errors.push(String.format(this.minLengthText, this.minLength));
}
if (value.length > this.maxLength) {
errors.push(String.format(this.maxLengthText, this.maxLength));
}
if (this.vtype) {
var vt = Ext.form.VTypes;
alert(vt[this.vtype](value, this));
if(!vt[this.vtype](value, this)){
errors.push(this.vtypeText || vt[this.vtype +'Text']);
}
}
if (this.regex && !this.regex.test(value)) {
errors.push(this.regexText);
}
return errors;
},
对比3.1中代码片段
validateValue : function(value){
if(Ext.isFunction(this.validator)){
var msg = this.validator(value);
if(msg !== true){
this.markInvalid(msg);
return false;
}
}
if(value.length < 1 || value === this.emptyText){
if(this.allowBlank){
this.clearInvalid();
return true;
}else{
this.markInvalid(this.blankText);
return false;
}
}
if(value.length < this.minLength){
this.markInvalid(String.format(this.minLengthText, this.minLength));
return false;
}
if(value.length > this.maxLength){
this.markInvalid(String.format(this.maxLengthText, this.maxLength));
return false;
}
if(this.vtype){
var vt = Ext.form.VTypes;
if(!vt[this.vtype](value, this)){
this.markInvalid(this.vtypeText || vt[this.vtype +'Text']);
return false;
}
}
if(this.regex && !this.regex.test(value)){
this.markInvalid(this.regexText);
return false;
}
return true;
},
可见3.2中对代码效率和错误处理作了一些调整,不过这个改动也确实太大了一些,不知道是不是考虑到效率对比发现了问题的所在:
//3.2中的代码 显然这里在allowBlank之后并没有返回true而是放任下面的代码继续 貌似这个不符合逻辑
if (!this.allowBlank && (value.length < 1 || value === this.emptyText)) {
errors.push(this.blankText);
}
//3.1中的代码
if(value.length < 1 || value === this.emptyText){
if(this.allowBlank){
this.clearInvalid();
return true;
}else{
this.markInvalid(this.blankText);
return false;
}
}
修复Bug代码:
// 修复ExtJS3.2中TextField allowBlank : true 失效的Bug
Ext.override(Ext.form.TextField, {
getErrors : function(value) {
var errors = Ext.form.TextField.superclass.getErrors.apply(this, arguments);
value = value || this.processValue(this.getRawValue());
if (Ext.isFunction(this.validator)) {
var msg = this.validator(value);
if (msg !== true) {
errors.push(msg);
}
}
if (value.length < 1 || value === this.emptyText) {
if (this.allowBlank) {
this.clearInvalid();
return true;
} else {
errors.push(this.blankText);
}
}
if (value.length < this.minLength) {
errors.push(String.format(this.minLengthText, this.minLength));
}
if (value.length > this.maxLength) {
errors.push(String.format(this.maxLengthText, this.maxLength));
}
if (this.vtype) {
var vt = Ext.form.VTypes;
if (!vt[this.vtype](value, this)) {
errors.push(this.vtypeText || vt[this.vtype + 'Text']);
}
}
if (this.regex && !this.regex.test(value)) {
errors.push(this.regexText);
}
return errors;
}
});
分享到:
相关推荐
ExtJS3.2正式版 货真价实 ExtJS3.2正式版
4. **AJAX支持**:ExtJS 3.2具有强大的AJAX功能,允许开发者异步与服务器进行数据交换,实现无刷新页面更新,提高用户体验。 5. **可配置和可扩展性**:每个组件都有丰富的配置选项,可以定制组件的行为和外观。...
总的来说,“ExtJs3.2官方原版”为开发人员提供了一个强大而全面的框架,用于构建具有专业级特性的Web应用。尽管对于初学者来说,英文文档可能是一道门槛,但通过学习和实践,可以充分利用这个库的潜力,创建出功能...
ExtJs3.2+中文API 便于开发查找API 很方便
在使用ExtJS3.2的列布局时,你需要创建一个容器(如Panel),然后设置其`layout`属性为`column`。接下来,你可以通过添加子组件(items)来定义每列的内容。每个子组件都可以有自己的宽度,通过`width`属性来指定。...
这个"Extjs3.2中文帮助手册"是开发人员在使用ExtJS 3.2时的重要参考资料,它包含了详细的API文档、示例代码和使用指南,使得开发者能够更方便地理解和应用这个框架。 手册中的知识点主要包括以下几个方面: 1. **...
"extjs3.2api中文"标题表明这是一个中文版的ExtJS 3.2 API文档,对于中文开发者来说,能够更方便地理解和使用这个框架。 "BLANK_IMAGE_URL"是ExtJS中的一个常量,它通常被用作一个占位符图像的URL。这个1×1像素的...
ExtJS 3.2通常包含一个名为`ext.jsb`的文件,这个文件是Spket识别ExtJS库的关键。接下来,按照以下步骤安装Spket插件: 1. **以Eclipse插件形式安装**: - 打开Eclipse,通过菜单栏依次选择`Help` -> `Software ...
ExtJS 3.2 聊天室程序(类Q_Q群)
ExtJS是一种主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。功能丰富,无人能出其右。无论是界面之美,还是功能之强,ext的表格控件都... ExtJs 3.2 中文API帮助文档,CHM离线的,希望对大家有帮助
我收集了各种ExtJS的例子,有3.2还有2.5,还有所有“掏钱学ExtJS”的例子,绝对物超所值。
网络上流传很多exjs 中文API,都神马东西,下载都没用。现在鄙人从脚本娃娃群分享的完整API上传分享给大家!
EXTJS 3.2-3.3版本是EXTJS框架的一个重要阶段,它提供了大量的组件、布局、数据绑定和事件处理机制,为开发者带来了强大的功能和灵活性。 EXTJS 3.2-3.3中文API文档是学习和开发EXTJS应用的重要参考资料。CHM...
Ext3.2中文API及代码示例,经典的API翻译,丰富的代码示例 就在这里等着你下!
ExtJs3.2的资源包,需要的朋友可以下载
在本文中,我们将详细介绍如何在Eclipse环境中安装适用于ExtJS 3.2的Spket插件,以便于JavaScript开发和代码提示。首先,让我们了解一下Eclipse、ExtJS和Spket这三个关键概念。 Eclipse是一款开源的集成开发环境...
Learning ExtJS 3.2.pdf绝对的高清,不过是英文的,下载之前考虑好,不想骗你们的分,呵呵
这是一个extjs3.2的中文API文档,可以用于学习。
技术:ExtJS 3.2 DWR 3.0 Struts 2.16 Spring 2.0 Hibernate 3.2 MySql 5.0 原文地址: http://yourgame.javaeye.com/blog/681537 火狐浏览器,谷歌浏览器测试通过. 讨论Q_群:91986229(群3) 76202406(群2) 62150370...
EXTJS 3.2版本是EXTJS发展过程中的一个关键节点,它提供了一套全面的UI解决方案,为开发者构建功能强大、用户体验良好的Web应用奠定了基础。通过深入理解和熟练运用EXTJS 3.2,开发者可以有效地提升工作效率,创造出...