在组合框/文本字段下添加自定义消息(而不是错误)

时间:2014-09-04 15:32:44

标签: extjs

我是extjs的新手,我正在寻找一种在我的组合框字段下添加一些自定义消息的方法。

根据某些条件(例如,选择的值),消息需要具有不同的文本和/或样式。

我可以使用与我的组合框关联的errorEl并根据状态更改它的消息/样式,但这看起来不是一个好方法。

您是否知道任何允许添加此类消息的插件,或者是否有更短的方法来执行此操作?


感谢您的建议。我最终编写了自己的插件,然后将其附加到组合框。

我在错误元素之后添加了新元素,并根据正确的组合框事件更改了消息。

afterCmpRender : function() {
    var me = this, cmp = me.getCmp();

    var messageWrapper = {
        tag : 'div'
    };
    var messageEl = cmp.errorEl.insertSibling(messageWrapper, "after");
    cmp.messageEl = messageEl;

    Ext.Array.each(me.messages, function(message) {
        var messageConfig = {
            tag : 'div',
            style : {
                display : 'none'
            }
        };
        var newElement = messageEl.insertSibling(messageConfig, "after");
        newElement.setHTML(message.value);
        newElement.addCls(message.classes);
        me.registerMessageEvents(me, cmp, message, newElement);
    });
}

2 个答案:

答案 0 :(得分:1)

我几乎总是为此使用多个元素,并且不会尝试更改字段。

根据您未提供的背景,我会说您可以查看:

  • Ext.form.field.Display
  • Ext.form.Label
  • Ext.tip.Tip
  • Ext.tip.QuickTip

答案 1 :(得分:1)

我会上课Ext.tip.Tip

您可以创建

Ext.create('Ext.tip.Tip', {
    id: 'myTip',
    header: false
});

然后

var tip = Ext.getCmp('myTip');
tip.update('your custom tip message');
tip.showBy(comboboxComponent);

您也可以使用showAt(..)代替showBy。 有关更多信息,请查看Docu

以下是示例的Fiddle链接。