甚至从事件侦听器/ ExtJS 禁用组合框中的项目

Posted

技术标签:

【中文标题】甚至从事件侦听器/ ExtJS 禁用组合框中的项目【英文标题】:Disable item from combobox even from events listener / ExtJS 【发布时间】:2014-03-04 17:17:30 【问题描述】:

假设我有这家商店:

var statsType = Ext.create('Ext.data.Store', 
fields: ['id', 'grayedOutComboItem', 'type', 'typeClass'],
data: [
    'id': '',
    'grayedOutComboItem': 'x-combo-grayed-out-item',
    'type': '== Moyennes ==',
    'typeClass': 'mean'
, 
    'id': '1',
    'grayedOutComboItem': '',
    'type': 'Moyennes journalières',
    'typeClass': 'mean',
, [...]

还有一个带有这个监听器的组合框:

        [...]
        listeners:
        
            'beforeselect': function(combo, record, index)
            
                return ("" != record.data.id);
            , [...]

它之所以有效,是因为如果单击具有空 id 的项目,组合框显示中不会发生任何事情。 但问题在于,它仍然会触发侦听器的事件。 所以当你点击它时仍然可以触发东西。

如何禁用它,使其不再触发任何东西!

:)

【问题讨论】:

【参考方案1】:

要取消事件使其不触发,请使用:

'beforeselect': function(combo, record, index, e) 
   if( "" == record.data.id ) 
      e.stopEvent();
   

【讨论】:

它仍然会触发事件,例如如果组合是 multiSelect: true,如果您选择一个活动项目然后单击禁用的项目,它会删除第一个的值。

以上是关于甚至从事件侦听器/ ExtJS 禁用组合框中的项目的主要内容,如果未能解决你的问题,请参考以下文章

EXTJS 组合框甚至更改页面加载时执行的代码

ExtJS:从组合中的选定商店获取信息

如何从 EXTJS 中的委托事件中获取记录?

EXTjs 操作组合框中显示的数据

商店上的 extjs 组合框 getCount() 返回 0

extjs 表单元素中的 Extjs 组合框在禁用时未灰显