Ext JS 3.4 - 更新组合框的显示字段而不会丢失隐藏值

时间:2013-11-22 19:00:31

标签: javascript extjs extjs3

所以我有一个用图标填充的组合框列表,然后是一个小描述。最初当我选择一个项目时,它会将html作为原始值放入显示中。显然在显示器中有RAW html不是我想要的,所以我试图剥离图像标签并使用其他信息作为原始值。

这适用于显示,但显示和值不同。 (使用hiddenName字段等)并设置原始值不仅会更新显示字段,还会更新值。这是不可接受的。

在选择项目时,我解析出图像标记,并且只想更新显示字段。这里的问题是没有方法我只能更新显示字段并保留隐藏值。

如何在不弄乱隐藏值字段的情况下更新显示字段?

更新:我试过了......这么近但没有雪茄......

select: function() {
            console.log(this.el.dom.value);
            this.el.dom.value = 'test';
}

这将显示字段更新为'test'但是出于一些神奇的原因,当我点击组合框时,它将我的隐藏值设置为等于我的显示值....任何想法?

更新2:我还尝试通过将this.suspendEvents()放在select监听器的末尾来挂起组合框上的所有事件....仍然没有去。我不能为我的生活弄清楚为什么隐藏的值会在盒子模糊时改变。我试过用蓝色返回false并改变监听器事件..... preventDefault没有效果。

1 个答案:

答案 0 :(得分:-1)

如果你看一下这个链接:     http://docs.sencha.com/extjs/4.2.1/source/ComboBox.html#Ext-form-field-ComboBox

有功能**setValue: function(value, doSelect) {...** 它有一些地方::

me.setHiddenValue(processedValue);

me.setRawValue(me.getDisplayValue());

这些线条正在做你提到过的神奇事物。

现在,为了解决您的问题,我想您可以这样做:

 select: function() {
                console.log(this.el.dom.value);
                var actualValue = this.el.dom.value;
                this.el.dom.value = 'test';
                this.setRawValue(actualValue );
                this.setHiddenValue(actualValue);
    }

希望这有帮助,我还没有测试过代码!