快捷搜索: 王者荣耀 脱发

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();
    	}

总结:

  1. Ext 动态设置 emptyText 要先给控件初始化 emptyText 值
  2. 要确保 控件被创建出来后再使用 以上两句代码设置控件显示的内容

希望对您有所帮助!

经验分享 程序员 微信小程序 职场和发展