惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Blog — PlanetScale
Blog — PlanetScale
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
I
InfoQ
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
D
DataBreaches.Net
L
LangChain Blog
F
Fortinet All Blogs
C
Check Point Blog
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
J
Java Code Geeks
月光博客
月光博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
宝玉的分享
宝玉的分享
Jina AI
Jina AI

博客园 - 疯狂秀才

Angular 开发小妙招1:提交表单数据验证不通过,更改输入组件的样式 疯狂秀才权限管理系统,开源了 - 疯狂秀才 - 博客园 edge 浏览器中数字显示为链接 JSON.net 在实体类中自定义日期的格式 让easyui 的alert 消息框中的确定按钮支持空格键 修复百度编辑器(UM)禁用时上传图片按钮还可点击的BUG; EasyUI datagrid : 启用行号、固定列及多级表头后,头部行号位置单元格错位的问题 【转】Chrome 控制台不完全指南 AngularJS 之 Factory vs Service vs Provider【转】 【转】NuGet.org 无法访问的解决方法 jquery easyui 1.4.1 验证时tooltip 的位置调整 jquery easyui 1.4.1 API( CHM版) 扩展 easyui-tabs 插件 关闭标签页方法 easyui layout 折叠后显示标题 easyui 中Datagrid 控件在列较多且无数据时,列显示不全的解决方案 为easyui datagrid 添加上下方向键移动 jQuery EasyUI 1.3.4 API CHM版下载 扩展 easyui 控件系列:为datagrid 增加过滤行 分享: 自用 webstorm 6 仿 sublimeText2 的代码风格
丰富Easyui 的插件 - lookup
疯狂秀才 · 2013-08-28 · via 博客园 - 疯狂秀才

插件用途:

  主要用于表单中,某字段的内容是用其他表里的记录ID。当然你可以使用combobox、combotree、combogrid等,但有时这些表现方式并不是很好,希望弹出个层,然后在去做一些查询并选取的操作。所以就封装了一下,方便以后使用,不用在写重复的代码。

效果图:

  

使用方法:

  插件使用Easyui 的相关样式,所以使用时需要引入Easyui 的相关脚本及样式。

var lu = $('#txt_ParentId').lookup({
        title: '选择上级区域',
        dialog: {
            content: '<ul id=ptree></ul>',
            height: 400,width:300,
            onOpen:function() {
                $('#ptree').tree({
                    url: actionUrl,
                    data: $('#areatree').tree('getData'),
                    onClick: function(node) {
                        lu.lookup('setValue', node.id).lookup('setText', node.text);

                        lu.lookup('close'); // 关闭弹窗
                    }
                });
            }
        }
    }).lookup('setText', '请选择区域').lookup('setValue', -1);        

 dialog:{} 这里就是Easyui 中的dialog ,参数神马的都一样

插件源码:

css

 .lookup .combo-arrow{
    background:url(../images/icon-select.gif) no-repeat 50% 50%;
}

图片:

js

/*
疯狂秀才(1055818239) 
version: 0.01
*/
(function ($) {

    // 创建控件DOM
    function create(target) {
        var id = $(target).attr('id');

        if (!id) {
            id = 'lookup_' + new Date().getTime();
            $(target).attr('id', id);
        }

        $(target).addClass('combo-f').hide();

        var lookup = $('<span class="combo"></span>').insertAfter(target);
        var textbox = $('<input type="text" class="combo-text" />').appendTo(lookup);
        var arrow = $("<span><span class=\"combo-arrow \"></span></span>").appendTo(lookup);
        var valbox = $("<input type=\"hidden\" class=\"combo-value\">").appendTo(lookup);

        lookup.addClass('lookup');



        var state = $.data(target, 'lookup');

        // 添加图标
        if (state.options.iconCls) {
            arrow.find('.combo-arrow').addClass(state.options.iconCls);
        }
        else {
            arrow.find('.combo-arrow').addClass('icon-search');
        }

        // 创建 dialog
        var _dialogOpts = {
            closed: true,
            title: state.options.title,
            onClose:function() {
                state.dialog.dialog('destroy');
                state.dialog = null;
            }
        }
        
        var name = $(target).attr("name");
        if (name) {
            lookup.find("input.combo-value").attr("name", name);
            $(target).removeAttr("name").attr("comboName", name);
        }
        textbox.attr("autocomplete", "off");

        arrow.on('click', function () {
            
            if (!state.dialog) {
                var did = 'dialog_' + id + '-' + new Date().getTime();
                _dialogOpts = $.extend({}, state.options.dialog, _dialogOpts);

                var _dialog = $('<div/>').attr('id', did).dialog(_dialogOpts);
                state.dialog = _dialog;
            }

            state.dialog.dialog('open');
        });

        state.textbox = textbox;
        state.valbox = valbox;
        

    }

    $.fn.lookup = function (options, param) {
        if (typeof options == 'string') {
            var method = $.fn.lookup.methods[options];
            if (method) {
                return method(this, param);
            } else {
                return this.lookup(options, param);
            }
        }

        options = options || {};

        return this.each(function () {
            var state = $.data(this, 'lookup');
            if (state) {
                $.extend(state.options, options);
                create(this);
            }
            else {
                $.data(this, 'lookup', { options: $.extend({}, $.fn.lookup.defaults, options) });
                create(this);
            }
        })

    }


    $.fn.lookup.methods = {
        open: function () { },
        close: function (jq) {
            return jq.each(function() {
                var state = $.data(this, 'lookup');
                state.dialog.dialog('close');
            });
        },
        setValue: function (jq, val) {
            return jq.each(function () {
                var state = $.data(this, 'lookup');
                state.valbox.val(val);
            });
            
        },
        getValue: function (jq) {
            var state = $.data(jq[0], 'lookup');
            return state.valbox.val();

        },
        setText: function (jq, text) {
            return jq.each(function () {
                var state = $.data(this, 'lookup');
                state.textbox.val(text);
            });

        },
        getText: function (jq) {
            var state = $.data(jq[0], 'lookup');
            return state.textbox.val();
        }
    }

    $.fn.lookup.defaults = {
        iconCls: '',
        width: 120, height: 'auto',
        dialog: {
            title: '选择',
            width: 400, height: 300
        },
        onOpened: function() {
        }
    }

})(jQuery);