下拉框信息太多,可通过键盘索引。
var charStr = "";
var lastCharStr = "", lastIndex = 0;
var timeOff = 0;
var curUlDiv = "";
var timeOutEvent = "";
function indexUser(evt, elemId) {
var evt = window.event?window.event:evt;
var char = String.fromCharCode(evt.keyCode).toLowerCase();
if(evt.keyCode==13) {
charStr = lastCharStr;
searchIndex(elemId);
return;
}
var curTime = new Date().getTime();
if (curTime - timeOff > 500) {
timeOff = curTime;
charStr = char;
timeOutEvent = setTimeout("searchIndex('" + elemId + "')",500);
} else {
charStr += char;
clearTimeout(timeOutEvent);
timeOutEvent = setTimeout("searchIndex('" + elemId + "')",500);
}
//charStr = evt;
}
function searchIndex(elemId) {
var uList = [];
if (elemId == "projTesters_userUlDiv") {
uList = testUserList;
} else {
uList = userList;
}
// 连续搜索一样的字符时,继续往下搜索
var startIndex = -1;
if (charStr == lastCharStr) {
startIndex = lastIndex;
}
// 否则从头开始搜索
var containerOffTop = $("#" + elemId).offset().top, indexOffTop = 0, moveTop = 0;
var height = containerOffTop + $("#" + elemId).height() -30;
for (var i = startIndex+1; i < uList.length; i++) {
if (uList[i].showname.toLowerCase().indexOf(charStr) == 0) {
$(".index_li").removeClass("index_li");
// 索引到的li的offset top
indexOffTop = $($("#" + elemId).find("li")[i]).offset().top;
moveTop = indexOffTop - height + $("#" + elemId).scrollTop();
$("#" + elemId).scrollTop(moveTop);
$($("#" + elemId).find("li")[i]).addClass("index_li");
lastCharStr = charStr;
lastIndex = i;
return;
}
}
lastIndex = -1;
}
function clearLassIndex(self) {
$(".index_li").removeClass("index_li");
$(self).addClass("index_li");
lastIndex = $(".index_li").index();
}
网友评论