ExtJS4在Fly上更改TextField emptyText

时间:2013-11-19 02:43:40

标签: javascript extjs4

如何动态更改文本字段的emptyText字段?

我试过了:

myTextField.emptyText = 'new empty text';

myTextField.emptyText = 'new empty text';
myTextField.applyEmptyText();

myTextField.emptyText = ['new empty text'];

myTextField.emptyText = ['new empty text'];
myTextField.applyEmptyText();

我意识到applyEmptyText()未在API文档中列出,但我认为我会试一试,因为这在以前的版本中有效。我还读过,也需要添加括号。

我已将myTextField打印到控制台,我看到emptyText属性设置为我想要的内容,但浏览器中的字段未更新。

4 个答案:

答案 0 :(得分:3)

我喜欢ExtJS以及它带来的所有内容但是这样的细微差别(尝试动态更新emptyText工作)确实减慢了开发速度。关于这个问题的其他SO帖子都没有解决我的问题(emptyText只是不会更新)。

经过几个小时“与我的工具战斗”和几十种不同的修复后,我想出了以下简单修复 - 只需添加 myTextField.reset(); 即可你的代码块。

myTextField.emptyText = 'new empty text';
myTextField.applyEmptyText();
myTextField.reset();

希望这能节省一些时间。

答案 1 :(得分:1)

您的第一次尝试应该按预期工作。但是,正如您在源代码中看到的那样,在设置占位符之前需要满足某些条件。最好的办法是在applyEmptyText函数中放置一个断点并进行调试。

applyEmptyText : function(){
    var me = this,
        emptyText = me.emptyText,
        isEmpty;

    if (me.rendered && emptyText) {
        isEmpty = me.getRawValue().length < 1 && !me.hasFocus;

        if (Ext.supports.Placeholder) {
            me.inputEl.dom.placeholder = emptyText;
        } else if (isEmpty) {
            me.setRawValue(emptyText);
            me.valueContainsPlaceholder = true;
        }

        //all browsers need this because of a styling issue with chrome + placeholders.
        //the text isnt vertically aligned when empty (and using the placeholder)
        if (isEmpty) {
            me.inputEl.addCls(me.emptyCls);
        }

        me.autoSize();
    }
}

答案 2 :(得分:0)

通过调试,似乎在我的事件中没有及时设置Text.inputEl.dom.placeholder属性来更新字段。根据上面的reset来源,我发现只需在我的代码中设置Text.inputEl.dom.placeholder即可。

答案 3 :(得分:0)

这个applyEmptyText方法肯定是错误的!!

查看代码,并想象你想将零设置为emptyText ....

查看if条件:

if (me.rendered && emptyText)

当emptyText = 0时,在条件下它将作为一个错误的解释.....它然后用这个代码不可能将零设置为emptyText !!!!