2008-02-20
Js AutoComplete Data User Json
/*
* author xxp 2008-12-2-19
*/
/*
{
responseInfo:{success:true,message:'返回数据!'},
data : [
{title:'<html>',completeData:'auto'},..
]
}
*/
var AutoComplete = Class.create({
initialize:function(url,input,div){
this.url=url;
this.input=input;
this.div=div;
var _in = $(input);
var _div= $(div);
this.fix = null;
$(this.input)._autoComplete=this;
$(this.input).onkeyup=function(){
if(!event) event = window.event;
switch(event.keyCode) {
case Event.KEY_ESC:
this._autoComplete.doHide();
return;
}
this._autoComplete.doPost();
};
},
//getData
data:null,
doPost:function(){
var obj=this;
new Ajax.Request(
this.url+'?k='+$(this.input).value,
{
onSuccess:function(r){
try{
var _d = r.responseText.evalJSON();
if(_d.responseInfo.success&&_d.data.length>0){
obj.data=_d;
obj.doDisplay();
}
}catch(ex){
//do nothing
//for test please use this code
alert("process data :"+ex.message);
}
}
}
);
},
doDisplay : function(){
this.doShow();
try{
var obj =this;
var id = new Date().getTime();
var html='<div id="'+id+'fix" style="position:absolute; border:1px #000000 solid;background:#FFFFFF"></div>';
$(this.div).innerHTML=html;
this.fix=$(id+'fix');
var _ul = new Element('ul');
this.fix.appendChild(_ul);
this.data.data.each(
function(i){
//process
var _li = new Element('li');
_li._autoComplete = obj;
_li.innerHTML = i.title;
_li._data = i.completeData;
_li.onclick = function (){
this._autoComplete.doEnter(this);
}
_li.onmouseover=function(){this.setStyle({background:"#E6ECFB"})};
_li.onmouseout=function(){this.setStyle({background:""})};
_li.setStyle({cursor:'pointer'});
_ul.appendChild(_li);
}
);
}catch(ex){
alert(ex.message);
}
},//doDisply
doEnter : function(obj){
$(this.input).value=obj._data;
this.doHide();
},
doShow : function(){
if($(this.div).getStyle('display')=='none'){
$(this.div).setStyle({'display':'block'});
}
},
doHide : function(){
if($(this.div).getStyle('display')=='block'){
$(this.div).setStyle({'display':'none'});
}
if(this.fix)
this.fix.remove();
}
}
);
<input type="text" name="user" id="user" value="<%=User%>" autocomplete="off" />
<div id="userNoAuto" class="autoComplete"></div>
<script>
new AutoComplete('json/User.asp','user','userNoAuto');
</script>
</div>
发表评论
最近加入圈子
最新评论
-
国人的技术和老外的差距
老外写书讲有理有据,分析、推理过程详尽。 国人善总结,重结论,其中道理自己慢慢悟 ...
-- by Godlikeme -
国人的技术和老外的差距
可能是大家这样认为的` 也可能我接触的面太小` 搞了2年的程序学过无数的技术 看 ...
-- by xxpniu -
国人的技术和老外的差距
国外1%的成功新技术背后是99%失败新技术.中国有那么多剩余劳动力么?
-- by 抛出异常的爱 -
国人的技术和老外的差距
国内的技术和国外没那么大差距,主要在管理上。放心吧,用不到20年,3~5年肯定赶 ...
-- by Godlikeme -
说说JS
是的,难得对JS深入的分析,令人信服....不禁赞同不已
-- by sp42







评论排行榜