zoukankan      html  css  js  c++  java
  • 丰富Easyui 的插件

    插件用途:

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

    效果图:

      

    使用方法:

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

      

    var lu = $('#txt_ParentId').lookup({
            title: '选择上级区域',
            dialog: {
                content: '<ul id=ptree></ul>',
                height: 400,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: '',
             120, height: 'auto',
            dialog: {
                title: '选择',
                 400, height: 300
            },
            onOpened: function() {
            }
        }
    
    })(jQuery);
    

      

  • 相关阅读:
    XML的语法
    dell omsa 监控,Nrpe信号量泄露
    cx_Oracle 报错 Reason: image not found
    cx_Oracle 中文乱码问题解决
    High Memory in the Linux Kernel
    使用二分法查找mobile文件中区号归属地
    mysql 导出csv
    行删除按钮功能
    vsftp 根据用户设置
    安装zabbix报错configure: error: libcurl library not found
  • 原文地址:https://www.cnblogs.com/hxling/p/jquery_lookup.html
Copyright © 2011-2022 走看看