1

我有一个组合框和一个文本字段。如果从组合框中选择了某些内容,我正在尝试向文本字段添加警告通知,说明“请输入值”。但是,如果从组合框中选择了“3”,我只希望在文本字段上显示警告

有什么办法可以做到吗?我不知道该怎么做。

这是我的组合框和文本字段的代码:

{
                            xtype:'combo',
                            store: ['1','2','3'],
                            triggerAction: 'all',
                            fieldLabel: 'Area',
                            id: 'dcArea',
                            width: 125,
                        },{
                            xtype:'textfield',
                            fieldLabel: 'Mile',
                            id: 'mile',
                            width: 125,
                        }
4

2 回答 2

2

当然,听众需要在组合中。用于msgTarget自定义错误消息的显示方式。

{
    xtype:'combo',
    store: ['1','2','3'],
    triggerAction: 'all',
    fieldLabel: 'Area',
    // bad practice
    // id: 'dcArea',
    width: 150,

    // <EDIT>
    msgTarget: 'under',
    // </EDIT>

    listeners: {
        change: function(combo, value) {
            // use component query to retrieve the other field
            var textfield = this.up('form').down('#mile');
            if (value === '3') {
                textfield.markInvalid("Please enter value");
            } else {
                textfield.clearInvalid();
            }
        }
    }
},{
    xtype:'textfield',
    fieldLabel: 'Mile',
    itemId: 'mile',
    width: 150
}

编辑使用msgTarget组合框的属性来配置错误消息的显示方式(请参阅更新的代码示例)。

于 2013-09-18T19:10:42.380 回答
1

在 extjs 中,这是添加侦听器的方式,on change在这种情况下会很有帮助。样本:

              {
                    xtype:'textfield',
                    fieldLabel: 'Mile',
                    id: 'mile',
                    width: 125,
                    name: 'myMiles'
                    listeners: {
                         'change': function() {
                          console.log('you changed the text of this input field');
                          var value = Ext.getCmp('mile').getValues().myMiles;
                          if(value == 3)
                          {
                            alert('You selected 3');
                          }
                        }
                    }
              }
于 2013-09-18T16:42:04.603 回答