HI, 我正在使用extjs 3.2.1 lib和iam new to extjs,
I have implemented combobox with remote with filtering option in the form, i have added forceSelection(true) property to combo for validate the text with store collection and allowblank(false) to combo for enable form save button .
我的问题是forceSelection属性仅验证模糊事件的控件并清除组合文本,如果用户在组合中输入无效文本,则启用保存按钮(因为我只检查了允许空白(false)组合)在表单中,当他点击保存按钮时,它会在组合中提交无效文本。
我已经检查了form和combo的isvalid()方法,在save事件中它还返回'true'。
如何在此特定情况下进行验证?
答案 0 :(得分:4)
您可以覆盖ComboBox中的validateValue函数,如果forceSelection设置为true,则检查该字段的原始值,如下所示:
Ext.override(Ext.form.ComboBox, {
validateValue : function(value) {
var errs = this.getErrors(value);
if((value || value != "") && this.forceSelection){
var val = this.getRawValue(),
rec = this.findRecord(this.displayField, val);
if(!rec)
errs.push("Invalid Selection");
}
var error = errs[0];
if (error == undefined) {
return true;
} else {
this.markInvalid(error);
return false;
}
}
});
答案 1 :(得分:0)
您可以为模糊事件添加事件侦听器,以验证用户输入的文本。
validateCombo = new function(field) {
//business logic for your validation here.
if(field.value == foo) {
//then do something
field.isValid(true); //the true boolean disables marking the field as invalid
}
else {
//do something else
field.markInvalid('this field is invalid');
}
}
var cb = new Ext.form.ComboBox({
// all of your config options
listeners:{
scope: yourScope,
'blur': validateCombo
}
});