Extjs远程组合验证问题

时间:2010-09-10 06:23:14

标签: javascript extjs

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'。

如何在此特定情况下进行验证?

2 个答案:

答案 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
}

});