flyinbird 2015-06-19 14:35 采纳率: 0%
浏览 1698

请教Extjs 2.0 扩展控件怎么写才能兼容多浏览器

代码如下,只能在IE里使用,火狐等其他浏览器导致表单其他控件不显示
请教指点,应该怎么完善代码,才能让该扩展控件 兼容多浏览器

//RadioList
/* --使用范例
{
xtype:'radiolist',
fieldLabel: '列表',
anchor:'90%',
id:'ListRadio',
store: new Ext.data.SimpleStore({
fields: ['value', 'text'],
data : [['Female', '女孩'],['Male', '男孩']]
}),
valueField : 'value',
displayField : 'text'
}
*/
Ext.form.RadioList = Ext.extend(Ext.form.TextField, {

defaultAutoCreate : {tag: "input", type: "hidden", size: "0",'readonly':'true', autocomplete: "off"},

initComponent : function()
{
    Ext.form.RadioList.superclass.initComponent.call(this);
    if(!this.store)
    {
        this.store = new Ext.data.SimpleStore({
            'id': 0,
            fields: ['value', 'text'],
            data : []
        });
        this.valueField = 'value';
        this.displayField = 'text';
    }

    if(!this.id)
    {
        this.id = Ext.id();
    }
},
onRender : function(ct, position)
{           
    Ext.form.RadioList.superclass.onRender.call(this, ct, position);

    this.initRadioList();
},  

initRadioList :function()
{ 
    var strCSS = (!Ext.isIE) ? 'margin-top:5px' : '';
    var divObj = this.el.dom.parentNode;

    var sd = this.store.data;
    if(sd && this.valueField && this.displayField)
    {
        for(var i=0;i<sd.length;i++)
        {   
            var strid = Ext.id();
            Ext.DomHelper.append(divObj,{tag: 'input',type: 'radio', id: strid, name:this.id, value:sd.items[i].data[this.valueField],style:strCSS},false);
            Ext.DomHelper.append(divObj,{tag: 'label', 'class': 'x-form-cb-label', 'for': strid, html: sd.items[i].data[this.displayField]}, false);          
        }
        if(this.value){
            this.setValue(this.value);
        }
        //加入事件
        var radioArr = this.el.dom.parentNode.getElementsByTagName("INPUT");
        for(var i=0;i<radioArr.length;i++)
        {
            if(radioArr[i].type == "radio")
            {
                radioArr[i].attachEvent('onclick',function(){
                    this.fireEvent('change', this, null, null);
                }.createDelegate(this));
            }
        }
    }      
},  

getValue : function()
{
    if(this.el == null) return "";
    var radioArr = this.el.dom.parentNode.getElementsByTagName("INPUT");
    if(radioArr == null) return "";
    for(var i=0;i<radioArr.length;i++)
    {
        if(radioArr[i].type == "radio" && radioArr[i].checked)
        {
            this.el.dom.value = radioArr[i].value;
            return radioArr[i].value;
        }
    }
    return "";
},

setValue : function(strValue)
{
    if(strValue == null || this.el == null)return;
    var radioArr = this.el.dom.parentNode.getElementsByTagName("INPUT");
    for(var i=0;i<radioArr.length;i++)
    {
        if(radioArr[i].type == "radio" && radioArr[i].value == strValue)
        {
            radioArr[i].checked = true;
            this.el.dom.value = radioArr[i].value;
            break;
        }
    }        
},

validate : function()
{
    if(!this.allowBlank && this.getValue() == "")
        return false;
    else
        return true;
}

});
Ext.reg('radiolist', Ext.form.RadioList);

  • 写回答

3条回答 默认 最新

  • devmiao 2015-06-19 15:16
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?