ExtJS3.2 TextField가 비활성화되도록 허용하는 문제
5012 단어 ext
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;
}
}
버그 코드 수정:
// 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;
}
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ExtJS 3.2 학습 노트(3) 사용자 정의 이벤트Extjs에서 모든 상속은 Ext.util에서 합니다.Observable 클래스의 컨트롤은 이벤트를 지원할 수 있습니다. 클래스에 대해 이벤트를 사용자 정의하려면 다음 절차를 따르십시오. 1, 먼저 클래스를 정의합니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.