formPanels文本字段值应该是href链接

时间:2013-12-12 11:19:17

标签: extjs extjs4 href extjs4.2

这是我的formpanel中的文本字段:

{
    xtype: 'textfield',
    fieldLabel: 'Homepage',
    name: 'homepage',
    tabIndex: 4,
    padding: '10'
}

我希望显示的加载值是可点击的链接。

修改

因为开头没有“http://”的网页不会显示在新标签中,我更改了解决方案:

listeners: {
     render: function (field) {
        this.getEl().on('click', function (e, t, eOpts) {
           var url = e.target.value;
           if (url != '') {
             if (url.indexOf("http://") != -1) {
               var win = window.open(url, '_blank');
             } else {
               var win = window.open('http://' + url, '_blank');
             }
           win.focus();
           }
        }
      }
}

2 个答案:

答案 0 :(得分:2)

  

你无法实现自己想要的目标。对于“链接”,你必须这样做   使用其他组件可能是带有链接的标签。但是通过一些技巧,您可以使文本字段中的值显示为链接。为此,您可以执行以下操作:

{
    xtype: 'textfield',
    name: 'name',
    id:'link',
    fieldStyle: 'color: blue; text-decoration:underline; cursor:pointer',
    listeners: {
        render: function (field) {
            this.getEl().on('click', function (e, t, eOpts) {
                console.log(e);
                //here you need to do some hack around to restrict changing href,only on click of input in the textfield.Could not achieve that,but tried to give some idea.
                var url = e.target.value;
                if(url != ''){
                    window.location="";
                }
            });
        }
    }
}

希望这有助于您: - )

答案 1 :(得分:1)

为此,您可以使用render函数,如下所示:

{
    xtype : 'displayfield',
    id: 'yourId',
    name:'yourName',
    fieldLabel: 'This is the label',
    renderer: function(data, field) {
        return '<a href="'+data+'">'+data+'</a>'
    }
}

它可能不是最优雅的解决方案,但它可以工作:)