2010-09-10 4 views
1

HI, я использую ExtJS 3.2.1 LIB и IAM новой для ExtJS,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 собственности проверяет контроль на событие размытия только и очистить текст комбо Если пользователь вводит недопустимый текст в комбо, кнопка сохранения включена (так как я только проверил allowblank (false) для комбо) в форме, и когда он нажал кнопку сохранения, ее отправили с недопустимым текстом в комбо ,

Я проверил метод isvalid() формы и комбо тоже, внутри события сохранения он также возвращает «истину».

Как я могу проверить в этом конкретном сценарии?

ответ

4

Потенциально можно переопределить функцию validateValue в ComboBox, и если forceSelection установлена ​​истина проверить необработанное значение поля от магазина, так как:

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; 
    } 
} 

});

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 
} 

});

Смежные вопросы