最近客户提出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; } }); |
|