带来验证堡垒extjs组合框

时间:2013-08-11 21:15:14

标签: jquery extjs extjs4

在我的extjs 4应用程序中,我使用这样的extjs组合,这个组合有三个值select,yes或no。默认情况下,我必须将组合值设置为“select”。如果他没有选择是或否,我还需要提醒用户。

因为我已经编写了这样的代码。但它没有用。

xtype: 'combo',
itemId:'comboOfficial',
id:'comboOfficial',
autoSelect:true,
width:50,
queryMode: 'local',
store: new Ext.data.ArrayStore({
    id: 0,
    fields: ['value', 'text'],
    data: [[1, 'Select'],[2, 'Yes'], [3, 'No']]  // data is local
}),
listeners: {                                                
    'select': function (combo, records, eOpts) {
        var recordSelected = combo.getStore().getAt(0); 
        alert(recordSelected);
        if(recordSelected == 1){
            alert("Please choose either 'Yes' or 'No'");
        }
    }
},
valueField: 'value',
displayField: 'text',
value: 1

1 个答案:

答案 0 :(得分:0)

你有两个问题:

  1. 您实际上并未将所选记录分配给recordSelected变量。您总是从商店中检索第一行。你需要替换

    var recordSelected = combo.getStore().getAt(0);
    

    var recordSelected = records[0]; //since you don't allow multiselect, 
                                     //records will always be an array 
                                     //of length 1.
    
  2. 您不能只检查是否recordSelected == 1,因为recordSelect是一个ExtJS对象,以模型指定的格式存储一些数据(根据您提供给商店的字段创建。)想检查是记录的value,可以通过替换

    来完成
    if (recordSelected == 1) {
    

    if (recordSelected.get('value') === 1) {
    
  3. 一旦你修复了这两件事,你的代码应该按照你的预期工作。