如何动态更改文本字段的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
属性设置为我想要的内容,但浏览器中的字段未更新。
答案 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 !!!!