从组合框中删除打字光标

Posted

技术标签:

【中文标题】从组合框中删除打字光标【英文标题】:Remove typing cursor from combobox 【发布时间】:2012-07-30 06:39:46 【问题描述】:

我正在使用 ExtJS 组合框。专注于组合框时有一个打字光标。我在创建组合框时尝试实现editable: false,但它仅对 chrome 有帮助。

还尝试了clearListeners() 函数来查看它是否适用于该光标 - 没有帮助,它仍然出现在 FireFox 和 IE 中。

另一个想法是在组合框中的输入字段上设置disabled。当我手动完成时,它会有所帮助。

但是当我写下一个时

Ext.get('bu-encodingcount-combobox').select('input').set(disabled:'disabled');

它没有帮助 - 不知道,也许表达式是错误的。

【问题讨论】:

【参考方案1】:

试试-

对于 IE

combo.inputEl.set(disabled:'disabled');

对于 Firefox -

combo.inputWrap.set(disabled:'disabled');

适用于 Chrome -

combo.inputCell.set(disabled:'disabled');

【讨论】:

【参考方案2】:

你可以添加配置,

可编辑:假

然后表现得像普通的 Combo 。

【讨论】:

不幸的是,有一个已知问题,这仅适用于 chrome,这正是它试图解决的问题。【参考方案3】:

您看到光标的原因是因为组合框获得焦点,因此处理此问题的最简单方法是在组合获得焦点时将焦点移动到下拉选择器上。

只需将此onFocus 配置添加到您的组合框配置中:

// example combobox config
xtype: 'combo',
allowBlank: false,
forceSelection: true,
valueField:'id',
displayField:'name',
store: myStore,

// add this "onFocus" config
onFocus: function() 
    var me = this;

    if (!me.isExpanded) 
        me.expand()
    
    me.getPicker().focus();
,

另外,如果这是一个forceSelection: true 组合框,我只建议这样做。它会破坏用户在字段中输入任何内容的能力。

【讨论】:

鼠标悬停在组合字段时如何制作光标? 此外,如果您的商店正在通过下拉单击加载,您可以在焦点事件中加载商店,如下所示:myStore.load();最初这是我的问题,直到我意识到商店还没有加载。希望这可以帮助其他人。 要强制它在 Ext 5 中的所有浏览器中工作,您现在必须使用 me.getPicker().focus(true);

以上是关于从组合框中删除打字光标的主要内容,如果未能解决你的问题,请参考以下文章

根据数据绑定组合框中的选定项目从访问数据库中删除

如何从包含前两列组合的熊猫数据框中删除行

JavaFX - 从其他组合框中删除所选项目

从组合框中删除 extjs 3.4 中的参数

从绑定到数据集的组合框中删除重复项

r 从包含 2 列组合的副本的数据框中删除行 [重复]