如何在extjs组合框中按Enter键获取所选结果的值

Posted

技术标签:

【中文标题】如何在extjs组合框中按Enter键获取所选结果的值【英文标题】:How to get the value of the selected result on pressing enter in extjs combobox 【发布时间】:2014-04-19 06:17:10 【问题描述】:

我有一个组合框,我使用向上/向下箭头键浏览搜索结果,当我在特定结果上按 Enter 时,我加载不同的视图,我还需要所选的值(针对值字段)结果。

我使用了 specialkey 事件和if (e.getKey() == e.ENTER),然后我执行 getValue(),然后加载视图。但是在 getValue() 上,我得到了原始值,即我显示的字符串,而不是 valuefield 的值(我有 displayField:'Name' 和 valueField:'id')。

我还尝试触发一个选择事件,并在它的侦听器中执行一个 combo.getValue(),但我仍然得到原始值而不是值字段的值。我需要 id,因为我可能有 2 个或更多同名的搜索结果,但每个搜索结果都有一个唯一的 id。

有没有办法让我获得价值?

【问题讨论】:

你能调整这个fiddle 以便我看到你的问题,因为这个例子是有效的 我使用 MVC & 在我的控制器中我有一个特殊键事件和选择事件的侦听器。当按下 Enter 时,我触发事件以加载不同的视图,并且我想在加载视图之前从变量中的组合框中设置所选结果的值(相对于值字段)。但问题是 View 是之前加载的,然后设置了值。 specialkey :function(field,e) if(e.getKey == e.ENTER) // var value = field.getValue(); //这给了我原始值而不是实际值 fireEvent('loadView'); , select :function(combo) var value =combo.getValue();//这里获取实际值 jsfiddle.net/dT3ZL。类似于这个小提琴,但我需要在视图加载之前的值。截至现在,视图加载然后我得到值 只是想知道,是选择唯一可以给我实际值的事件(针对 valuefield 指定)还是有更多事件? 【参考方案1】:

组合框与选择器的 2 个事件挂钩,这对您来说应该很有趣:

me.mon(picker, 
    itemclick: me.onItemClick,
);

me.mon(picker.getSelectionModel(), 
    selectionchange: me.onListSelectionChange,
);

来源:http://docs.sencha.com/extjs/4.2.2/source/ComboBox.html#Ext-form-field-ComboBox

你需要参与这些事件,然后你应该有你的价值

【讨论】:

谢谢....我在 extjs 4.2.1 文档中检查了这些事件,但在 Ext.form.field.Combobox 或 Ext.for.field 中找不到 itemclick 或 selectionchange。 Picker.如果可能的话,你能发布一个示例...... 抱歉,我只能为您指明正确的方向,没有时间深入研究,但以下是事件:selectionchange 和 itemclick 另外我想在按下向上或向下箭头键时在组合框文本字段的搜索结果中设置突出显示的值。尝试使用 highlightAt 功能,但这在 IE8 中不起作用。还有其他的吗这样做的方式?这将是一个很大的帮助....谢谢

以上是关于如何在extjs组合框中按Enter键获取所选结果的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 selenium python 中按 Enter 键?

在Winform的组合框中获取旧的选定索引

在文本框中按 Enter 时如何触发 HTML 按钮?

如何在 keydown 事件后在文本框中按 enter 删除虚拟键盘

如何在文本框中获取Enter键以触发函数而不是第一个/默认按钮

如何在自动建议框中使用向下箭头键?