修正Extjs表单中emptyText的提交

//使用Ext3.3自带的清除emptyText的方法
//onRenderTmp不放在override中,因为在Ext3.0下,会造成递归导致堆栈溢出
var onRenderTmp = Ext.form.FormPanel.prototype.onRender;
Ext.override(Ext.form.FormPanel, {
    //缓存原有onRender方法再重写(这里不方便使用extend,因为项目中使用的都是Ext.form.FormPanel)
    onRender: function(ct, position){
        onRenderTmp(ct, position);
        this.form.on({
            //使用Ext3.3自带的清除emptyText的方法
            beforeaction : function(form, action){
                var fields = form.items,
                    emptyFields = [],
                    setupEmptyFields = function(f){
                        if (f.el.getValue() == f.emptyText) {
                            emptyFields.push(f);
                            f.el.dom.value = "";
                        }
                        if(f.isComposite && f.rendered){
                            f.items.each(setupEmptyFields);
                        }
                    };

                fields.each(setupEmptyFields);
            }
        });
    }
});


注:由于原有自己的方式有bug,而且知道Ext后续版本有清除方式,所以此处修改为使用Ext3.3的代码,以免误导别人。

你可能感兴趣的:(ext,F#,prototype,ITeye)