一锅小青蛙 2016-08-12 07:30 采纳率: 50%
浏览 1956
已采纳

easyui 带清除图标的文本框,多个文本框实现时出现问题

这是官网的代码

 $.extend($.fn.textbox.methods, {
    addClearBtn: function (jq, iconCls) {
        return jq.each(function () {
            var t = $(this);
            var opts = t.textbox('options');
            opts.icons = opts.icons || [];
            opts.icons.unshift({
                iconCls: iconCls,
                handler: function (e) {
                    $(e.data.target).textbox('clear').textbox('textbox').focus();
                    $(this).css('visibility', 'hidden');
                }
            });
            t.textbox();
            if (!t.textbox('getText')) {
                t.textbox('getIcon', 0).css('visibility', 'hidden');
            }
            t.textbox('textbox').bind('keyup', function () {
                var icon = t.textbox('getIcon', 0);
                if ($(this).val()) {
                    icon.css('visibility', 'visible');
                } else {
                    icon.css('visibility', 'hidden');
                }
            });
        });
    }
});

然后我想让页面上的3个input同时实现这个功能

 $(function () {
    $('input').textbox().textbox('addClearBtn', 'icon-clear');
});

结果
图片说明

求大神解答,谢谢!!!

  • 写回答

3条回答

  • Go 旅城通票 2016-08-12 09:07
    关注

    easyui自带的就有了,干嘛还自己扩展。。

     $('input').textbox({ icons: [{ iconCls: 'icon-clear', handler: function (e) { $(e.data.target).textbox('clear'); } }] })
    

    你要用扩展的应该在each前修改icons,而不是each里面,不要每次都压入一个新图标,所以最后出现多个x,只有第一个是隐藏的

    而且你不要用input选择器,会选中input标签,包含隐藏的

            $.extend($.fn.textbox.methods, {
                addClearBtn: function (jq, iconCls) {
    
                    var opts = jq.textbox('options');
                    opts.icons = opts.icons || [];
    
                    opts.icons.unshift({
                        iconCls: iconCls,
                        handler: function (e) {
                            $(e.data.target).textbox('clear').textbox('textbox').focus();
                            $(this).css('visibility', 'hidden');
                        }
                    });
                    return jq.each(function () {
                        var t = $(this);
                        t.textbox();
                        if (!t.textbox('getText')) {
                            t.textbox('getIcon', 0).css('visibility', 'hidden');
                        }
                        t.textbox('textbox').bind('keyup', function () {
                            var icon = t.textbox('getIcon', 0);
                            if ($(this).val()) {
                                icon.css('visibility', 'visible');
                            } else {
                                icon.css('visibility', 'hidden');
                            }
                        });
                    });
                }
            });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站