分享

ligerui新增自动补全上下键选取功能

 aaie_ 2015-01-06

最近客户提出ligerui自动补全的时候输入关键字之后需要用上下键来选择,所以对ligerui不是熟悉的情况下该了该!往大神们帮我看看还要怎么写!

if(p.autocomplete){

//输入框keydown事件
 g.inputText.keydown(function(event) {
 
switch (event.keyCode) {
case 40://向下键
if (p.disabled || p.readonly) return;
                    if (g.trigger('beforeOpen') == false) return false;
var $selectboxs=g.selectBox;
var $nextSiblingTr = $selectboxs.find(".l-box-select-table").find(".l-over").parent("tr");
if($nextSiblingTr.length <= 0){//没有选中行时,选中第一行
$nextSiblingTr = $selectboxs.find(".l-box-select-table").find("tr:first");
}else{
$nextSiblingTr = $nextSiblingTr.next();
}
$selectboxs.find(".l-box-select-table").find("tr td").removeClass("l-over");
if($nextSiblingTr.length > 0)//有下一行时(不是最后一行)
$nextSiblingTr.find("td").addClass("l-over");//选中的行加背景
var value = $nextSiblingTr.find(".l-over").attr("value");
var text = $nextSiblingTr.find(".l-over").attr("text");
 g._changeValue(value, text);
break;
case 38://向上键
if (p.disabled || p.readonly) return;
                    if (g.trigger('beforeOpen') == false) return false;
 
var $selectboxs=g.selectBox;
var $nextSiblingTr = $selectboxs.find(".l-box-select-table").find(".l-over").parent("tr");
var $previousSiblingTr =  $selectboxs.find(".l-box-select-table").find(".l-over").parent("tr");
if($previousSiblingTr.length <= 0){//没有选中行时,选中最后一行行
$previousSiblingTr = $selectboxs.find(".l-box-select-table").find("tr:last");
}else{
$previousSiblingTr = $previousSiblingTr.prev();
}
$selectboxs.find(".l-box-select-table").find("tr td").removeClass("l-over");
if($previousSiblingTr.length > 0)//有上一行时(不是第一行)
$previousSiblingTr.find("td").addClass("l-over");//选中的行加背景
var value = $previousSiblingTr.find(".l-over").attr("value");
var text = $previousSiblingTr.find(".l-over").attr("text");
 g._changeValue(value, text);

break;
case 13://回车键
g.selectBox.hide();
break;
case 27://ESC键隐藏下拉框
g.selectBox.hide();
break;
}
});
}


2015.01.09.修改  基于1.2.5版本
1.上下键选择时数据不上屏
2.支持Grid选择
3.KeyUp时中断处理()


g.inputText.keyup(function (event)
{
                if (this._acto)
                    clearTimeout(this._acto);
                   
                //add by aaie 2015-01-07 15:52:18 keyup时,不再处理
                if (event.which==13 || event.which==27 || event.which==40 || event.which==38 ||event.which==9 )
                {
                    return;
                }
                   
                this._acto = setTimeout(function ()
{
                    if (lastText == g.inputText.val()) return;
                    p.initValue = "";
                    g.valueField.val("");
                    if (p.url)
{
                        g.setParm('key', g.inputText.val());
                        g.set('url', p.url);
                        g.selectBox.show();
                    } else if (p.grid)
{
                        g.grid.setParm('key', g.inputText.val());
                        g.grid.reload();
                    }
                    lastText = g.inputText.val();
                    this._acto = null;
                }, 300);
            });




//add by aaie 2015-01-07 15:52:18 自动下拉处理
            g.inputText.keydown(function(event){
                    switch(event.keyCode){
                        case 40: //下
                                if (p.disabled||p.readonly) return;
                                if (g.trigger('beforeOpen')==false) return false;
                               
                                var $selectboxs= g.selectBox;
                                g._toggleSelectBox(false);
                               
                                if (p.grid) //网格
                                {
                                    var $selectGridBody= $selectboxs.find(".l-grid2 .l-grid-body");// .l-grid-body-inner
                                    var $selectGridRow= $selectGridBody.find(".l-grid-row-over");
                                    var $nextSiblingRow;
                                    if ($selectGridRow.length<=0){
                                        $nextSiblingRow= $selectGridBody.find("tr:first");   
                                    }else {
                                        $nextSiblingRow= $selectGridRow.next("tr");   
                                    }
                                    if ($nextSiblingRow.length>0){
                                        if ($selectGridRow.length>0){
                                            $selectGridRow.toggleClass("l-grid-row-over");   
                                        }   
                                        $nextSiblingRow.toggleClass("l-grid-row-over");
                                    }
                                    //alert($nextSiblingRow.html());
                                   
                                }else { //非网格
                                    var $selectTr=$selectboxs.find(".l-box-select-table").find(".l-over").parent("tr");
                                    var $nextSiblingTr;
                                    if ($selectTr.length<=0){ //没有选中行时, 选中第一行
                                        $nextSiblingTr= $selectboxs.find(".l-box-select-table").find("tr:first");
                                    }else {
                                        $nextSiblingTr= $selectTr.next();   
                                    }
                                    if ($nextSiblingTr.length>0){ //有下一行
                                        if ($selectTr.length>0)
                                            $selectTr.find("td").toggleClass("l-over");
                                        $nextSiblingTr.find("td").toggleClass("l-over"); //选中行加背景
                                       
                                        //var value= $nextSiblingTr.find(".l-over").attr("value");
                                        //var text= $nextSiblingTr.find(".l-over").attr("text");
                                        //g._changeValue(value,text);
                                    }   
                                }
                                break;
                        case 38: //上
                                if (p.disabled||p.readonly) return;
                                if (g.trigger('beforeOpen')==false) return false;
                                   
                                var $selectBoxs= g.selectBox;
                                g._toggleSelectBox(false);
                               
                                if (p.grid){ //网格
                                    var $selectGridBody= $selectBoxs.find(".l-grid2 .l-grid-body");
                                    var $selectGridRow= $selectGridBody.find(".l-grid-row-over");
                                    var $nextSiblingRow;
                                   
                                    if ($selectGridRow.length<=0){
                                        $nextSiblingRow= $selectGridBody.find("tr:last");   
                                    }else{
                                        $nextSiblingRow= $selectGridRow.prev("tr");   
                                    }
                                    if ($nextSiblingRow.length>0){
                                        if ($selectGridRow.length>0){
                                            $selectGridRow.toggleClass("l-grid-row-over");   
                                        }   
                                        $nextSiblingRow.toggleClass("l-grid-row-over");   
                                    }
                                }else { //非网格
                               
                                    var $selectTr= $selectBoxs.find(".l-box-select-table").find(".l-over").parent("tr");
                                    var $preSiblingTr;
                                    if ($selectTr.length<=0){ //无选中行,选最后一行
                                        $preSiblingTr= $selectBoxs.find(".l-box-select-table").find("tr:last");
                                    }else{
                                        $preSiblingTr= $selectTr.prev();   
                                    }
                                    if ($preSiblingTr.length>0){
                                        if ($selectTr.length>0)
                                            $selectTr.find("td").toggleClass("l-over");
                                        $preSiblingTr.find("td").toggleClass("l-over");
                                       
                                   
                                        //var value= $preSiblingTr.find("td").attr("value");   
                                        //var text= $preSiblingTr.find("td").attr("text");
                                        //g._changeValue(value,text);
                                    }
                                }
                               
                                break;
                        case 13: //回车
                                if (p.disabled||p.readonly)return;
                                if (g.trigger('beforeOpen')==false) return false;
                                var $selectBoxs= g.selectBox;
                               
                                if (p.grid){
                                    var $selectGridRow= $selectBoxs.find(".l-grid2 .l-grid-body .l-grid-row-over");
                                    if ($selectGridRow.length>0){
                                            var $selectRowData= g.grid.getRow($selectGridRow[0]);
                                            if ($selectRowData){
                                                var value= $selectRowData[p.valueField];
                                                var text= $selectRowData[p.textField];
                                                g._changeValue(value,text);
                                            }
                                            //alert(g.grid.getHeight());
                                            //$("#msginfo").val("999");
                                    }
                                    $("a.l-checkbox-checked", $selectBoxs).removeClass("l-checkbox-checked");
                                        $("td.l-selected", $selectBoxs).removeClass("l-selected");
                                        $(":checkbox", $selectBoxs).each(function () { this.checked = false; });
                                        g._toggleSelectBox(true);
                                }else {
                                    var $selectTr= $selectBoxs.find(".l-box-select-table").find(".l-over");
                                    if ($selectTr.length>0){
                                            var value= $selectTr.attr("value");
                                            var text= $selectTr.attr("text");
                                            $selectTr.removeClass("l-over");
                                            //$selectTr.addClass("l-selected");
                                            $("a.l-checkbox-checked", $selectBoxs).removeClass("l-checkbox-checked");
                                            $("td.l-selected", $selectBoxs).removeClass("l-selected");
                                            $(":checkbox", $selectBoxs).each(function () { this.checked = false; });
                                            g._changeValue(value,text);
                                    }
                                    g._toggleSelectBox(true);
                                }
                                break;
                        case 27: //ESC
                                g._toggleSelectBox(true);
                                break;
                        case 9:
                                //g.selectBox.hide();
                              break;
                        default:
                                if (p.disabled||p.readonly) return;
                                if (g.trigger('beforeOpen')==false) return false;
                               
                                g._toggleSelectBox(false);
                                //g._toggleSelectBox(g.selectBox.is(":visible"));
                                //if (p.url){
                        //    g.setParm('key', g.inputText.val());
                        //    g.set('url', p.url);
                        //    g.selectBox.show();
                        //} else if (p.grid){
                        //    g.grid.setParm('key', g.inputText.val());
                        //    g.grid.reload();
                        //}   
                                //var $selectBoxs= g.selectBox;
                                //$selectBoxs.show();
                                break;
                    }
                });

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约