ligerUI 关于ligerComboBox控件无法自动完成本地数据问题

对web的关注开始于 最近跨平台的火热! 我需要做一个小的人事系统 本人一个小码农 不懂一些跨平台的语言,所以决定用web来试一试! 然就是下面的一个小插曲! 我就不谈我是这么样选择ligerUI的 在使用的过程中也发现了大大小小问题 但是他是开源的所以我们可以自己来解决。下面就是我发现ligerCombobox的一个小的问题 本地数据无法自动完成 “Autocomplate ” 本人是菜鸟没学过js 一些处理上也许让看到这篇文章的人 忍不住要骂我。骂我没问题 但不要骂我的家人……

好的 我们来看一段代码`在此输入代码

<!-- lang: js -->
 _setAutocomplete: function (value) {
        var g = this, p = this.options;
        if (!value) return;
        g.inputText.removeAttr("readonly");
        var lastText = g.inputText.val();
        g.inputText.keyup(function ()
        {
            setTimeout(function ()
            {
                if (lastText == g.inputText.val()) return;
                p.initValue = "";
                g.valueField.val("");
                if (p.url)  //在这里他判断了combobox本身是否设置了url
                {
                    g.setParm('key', g.inputText.val());  //如果设置了url就传到一个key做为参数然后传到后台
                    g.set('url', p.url);
                    g.selectBox.show();
                } else if (p.grid)  //这里如果combobox本身的url没有设置那么 检查一下是否设置了grid
                {
                    g.grid.setParm('key', g.inputText.val()); //这里就一样了 设置key然后传向后台
                    g.grid.reload();
                } 
                lastText = g.inputText.val();
            }, 1);
        });
    }

我们发现根本就没有本地数据的判断或者使用 可见作者应该没有考虑本地数据 那么我们下一步就是增加一些代码来加入本地数据的判断 和处理

<!-- lang: js -->
_setAutocomplete: function (value) {
        var g = this, p = this.options;
        if (!value) return;
        g.inputText.removeAttr("readonly");
        var lastText = g.inputText.val();
        g.inputText.keyup(function ()
        {
            setTimeout(function ()
            {
                if (lastText == g.inputText.val()) return;
                p.initValue = "";
                g.valueField.val("");
                if (p.url)  //在这里他判断了combobox本身是否设置了url
                {
                    g.setParm('key', g.inputText.val());  //如果设置了url就传到一个key做为参数然后传到后台
                    g.set('url', p.url);
                    g.selectBox.show();
                } else if (p.grid)  //这里如果combobox本身的url没有设置那么 检查一下是否设置了grid
                {
                    if(p.grid.data) //判断是否设置了本地数据
                	{
                		var rows = p.grid.data.Rows; //获取本地数据所有行  
                		var newrow = {"Rows":[]}; //创建一个新的本地数据副本
                		for(var o in rows){  //下面就是本地数据匹配
                			var no = rows[o].No;  //这么我配备的是 我的本地数据的一个No 字段 我的行数组大概是这样的{Id:0,No:'001',Name:'小明'}
                			var index =no.indexOf(lastText); 
                			if(index >= 0 ){
                				newrow.Rows.push(rows[o]); //如果本行包含了用户输入的数据那么加入副本数据
                			}
                		}
                		g.grid.setOptions({data:newrow}); //匹配完毕设置新的本地数据
                		g.grid.loadData();//载入新数据
                		return;
                	}
                    g.grid.setParm('key', g.inputText.val()); //这里就一样了 设置key然后传向后台
                    g.grid.reload();
                } 
                lastText = g.inputText.val();
            }, 1);
        });
    }

最终结果是 输入数据前

输入数据后

转载于:https://my.oschina.net/u/1185451/blog/299484

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值