如何将工具提示设置为输入类型为文件的 Ext.form.TextField?

Posted

技术标签:

【中文标题】如何将工具提示设置为输入类型为文件的 Ext.form.TextField?【英文标题】:How to set tooltip to Ext.form.TextField where input type is file? 【发布时间】:2018-11-27 06:27:23 【问题描述】:

我是 extjs 的新手,我想将工具提示设置为带有输入类型文件的 Ext.form.TextField 的字段标签。 我尝试通过遵循代码来做到这一点,但它不起作用。

    Ext.override(Ext.form.Field, 
        afterRender : Ext.form.Field.prototype.afterRender.createSequence(function()
            var qt = this.qtip;
            if (qt) 
                Ext.QuickTip.register (
            target:  this,
            title: '',
            text: qt,
            enabled: true,
            showDelay: 20
                )
            
        )
    );


   this.myTestComponent = new Ext.form.TextField(
       fieldLabel: 'My Field lable',
       qtip: 'My Field Tooltip',
       name: 'field1',
       scope: this,
       inputType: 'file',
       width: 150
    )

【问题讨论】:

究竟是什么不起作用?你在使用 ExtJS 3 吗?谢谢。 是的,我正在使用 ExtJs 3,qtip:“我的字段工具提示”不起作用。我想将工具提示设置为字段标签。但我的 TextField 的类型是文件,它不起作用 【参考方案1】:

试试这样:

        
            xtype:'textfield',
            name: 'field1',
            fieldLabel:'Label Descr',
            inputType: 'file',
            width: 250,
            listeners: 
                render : function(c) 
                    new Ext.ToolTip(
                        target : c.label.dom,
                        html: 'My tooltip'
                    );
                
             
        

【讨论】:

它给出错误 - TypeError: c.label is undefined target : c.label.dom, 如果我没记错的话,“文本字段”必须位于具有“表单”布局的面板内才能创建标签。 看看这个小提琴,看看有没有帮助:fiddle.sencha.com/#view/editor&fiddle/2o20 谢谢先生,但还是报同样的错误,TypeError: c.label is undefined target : c.label.dom, 奇怪,检查监听器是否声明在正确的地方,在textfield组件下,你可以放一个console.log(c)来查看textfield属性。【参考方案2】:

解决方案:

我会准确回答你的问题 - 如果你想添加一个工具提示,你可以使用这个:

Ext.onReady(function() 
    Ext.QuickTips.init();

    var textFieldStreet = new Ext.form.TextField(
        fieldLabel: 'My Field lable',
        //renderTo: Ext.getBody(),
        name: 'field1',
        inputType: 'file',
        listeners: 
            render : function(c) 
                new Ext.ToolTip(
                    target : c.label.dom,
                    html: 'Label tooltip'
                );
                new Ext.ToolTip(
                    target : c.getEl(),
                    html: 'Field tooltip'
                );
            
         
    );

    var form = new Ext.form.FormPanel(
        renderTo: Ext.getBody(),
        items: [textFieldStreet]
    );

)

注意事项:

使用 ExtJS 3.4 测试。

Config fieldLabel 仅在 textfield 由已配置为使用 FormLayout 布局管理器的容器呈现时使用。

一个缺点是 Chrome 和 Mozilla 中默认的“未选择文件”工具提示。

你可以看到这个fiddle。

【讨论】:

谢谢您,先生,我使用了您的代码。但它仍然无法正常工作 @AmitaPatil 我已经用工作小提琴更新了答案。 添加了3次fieldLabel: 'fieldLabel',隐藏brows button和fileName字段 您好先生,它可以工作,但它在浏览按钮上显示两个工具提示 @AmitaPatil 是的,此提示是 webkit 浏览器的一部分(有关更多信息和解决方法,请参阅答案中的链接)。在 IE 中这不是问题。但我认为,在字段标签上,工具提示在所有浏览器上都运行良好。

以上是关于如何将工具提示设置为输入类型为文件的 Ext.form.TextField?的主要内容,如果未能解决你的问题,请参考以下文章

工具 | Axure基础操作 No.2

如何将pdf文档设置为不能打印

如何将上传文件的名称设置为输入类型:html 中 javascript 上的文本

将引导工具提示设置为 AJAX 调用结果

将部分数据工具提示文本设置为粗体

如何设置使打开EXCEL表格需要输入密码