Ext 动态设置表单文本框的 emptyText
需求:字典管理需要对一项特殊类型添加和编辑时提示输入信息( emptyText 设置值),编辑其它类型时则不提示输入信息( emptyText 清除值)。
搜了好多资料,发现都是说使用以下两句代码即可解决问题:
Ext.getCmp(statusKey).emptyText = 请输入产品名称; Ext.getCmp(statusKey).applyEmptyText();
最后发现这两句还真是正解!但是,中间还是遇到了些要注意的点,这里记录一下:
刚开始,我直接把这两句代码复制过来用发现一个问题:
提示信息确实是出来了,但是却出现了以下尴尬的事情:
当光标聚焦到该文本框时,提示信息竟然不消失!!!
后来找了半天,发现需要给该文本框初始化 emptyText 属性,不然就会出现以上现象:
// 文本框空值提示信息(方法体外定义全局变量) var statusKeyTip = 请输入产品名称;
new Ext.form.TextField({ fieldLabel: 项值<font color=red>*</font>, name: statusKey, id: statusKey, emptyText: statusKeyTip // 就是这个属性,一定不能忘了要初始化,不写会有问题 })
还有,就是在使用动态设置 emptyText 值的代码时,它们的位置不是随便放的。一定要确保 id 为 statusKey 的 TextField 被创建出来之后才能用,不然会报 emptyText 的异常。
// 添加时文本框对“op.pddId == 300”的类型显示提示信息 Ext.getCmp(statusKey).emptyText = 请输入产品名称; Ext.getCmp(statusKey).applyEmptyText();
// 编辑时文本框只对“op.pddId == 300”的类型显示提示信息 if (op.pddId == 300) { Ext.getCmp(statusKey).emptyText = 请输入产品名称; Ext.getCmp(statusKey).applyEmptyText(); } else { Ext.getCmp(statusKey).emptyText = ; Ext.getCmp(statusKey).applyEmptyText(); }
总结:
- Ext 动态设置 emptyText 要先给控件初始化 emptyText 值
- 要确保 控件被创建出来后再使用 以上两句代码设置控件显示的内容
希望对您有所帮助!