0

私のextjs 4アプリケーションでは、このようなextjsコンボを使用しています。このコンボには、yesまたはnoの3つの値が選択されています。デフォルトでは、コンボ値を「選択」として設定する必要があります。また、ユーザーが「はい」または「いいえ」を選択しなかった場合は、ユーザーに警告する必要があります。

そのために、私はこのようなコードを書きました。しかし、それは機能していません。

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
4

1 に答える 1

0

2 つの問題があります。

  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 == 1recordSelect は、モデル (ストアに提供したフィールドに基づいて作成される) で指定された形式でデータを格納する ExtJS オブジェクトであるため、チェックすることはできません。チェックしたいのvalueは、レコードのです。置き換えることによって行われる

    if (recordSelected == 1) {
    

    if (recordSelected.get('value') === 1) {
    

これらの両方を修正すると、コードは期待どおりに動作するはずです。

于 2013-08-11T21:34:51.587 に答える