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