在我遇到要动态更改TextField的fieldLabel方法时,因为ExtJs本身没有提供这个方法,在网上找了很多资料也没能正在解决这个问题,于是我自己研究了很久,终于想到一个方法。那就是用Firebug来查看ExtJs的TextField在运行时被解析成什么样的HTML标签,然后用Dom操作来修改它的标题。
var textField = new Ext.form.TextField({
fieldLabel: "输入框标题",
id: "textfieldId"
});
上面的一个TextField在运行时被解析成的HTML为:
<div tabindex="-1" class="x-form-item " id="ext-gen117">
<label class="x-form-item-label" for="textfieldId" id="ext-gen118">输入框标题:</label>
<div style="padding-left: 105px;" id="x-form-el-netprice1" class="x-form-element">
<input type="text" name="textfieldId" id="textfieldId" autocomplete="off" class=" x-form-text x-form-field x-form-num-field" title="">
</div>
<div class="x-form-clear-left"></div>
</div>
从上面的HTML可以看出,输入框(text)和它的标题(label)的Dom关系是:label是text的叔叔 ,所以,我们可以使用如下代码来更改它的标题:
document.getElementById("textfieldId").parentNode.previousSibling.innerHTML ="输入框标题改变了:";
注:在更改它的标题之前,要保证该TextField已经被渲染到窗体。