ajax实时获取下拉数据

ajax获取数据

今天做一个功能,当你在一个表单里面输入文字的时候,用ajax实时和后台数据库交互获取数据,然后下拉展示在一个DOM中。你点击需要的数据后,这个数据写如到当前输入框。
并在后面添加逗号隔开,继续输入的时候,后台处理继续输出数据以供选择。

实现代码:

HTML:

[code lang=”html”]

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ajax实时获取下拉数据</pre>
<style><!–
.input_s{ position:relative}
.input_s ul{ list-style:none; margin:0; padding:0; width:200px; border:1px solid #ccc; border-bottom:none}
.input_s ul li{ border-bottom:1px solid #ccc}
.input_s ul li:hover{ color:#fff; background:#000}
–></style>
<pre></pre>
<div class="input_s"><input class="tla" id="tla" style="width: 500px;" type="text" name="tla" />
</div>
<pre>
<script type="text/javascript">// <![CDATA[
var funjieliu = function(fn, delay){//函数节流 add by shanmao 2013 – 1 – 18
var timer = null;
return function(){
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function(){
fn.apply(context, args);
}, delay);
};
};
document.getElementById("tla").onkeyup=funjieliu(function(){//键盘按下的时候
var tla = $("#tla").val();
if(tla){
$.post("/cityosweb/default.php/shanmao/input_xiala",{tla:tla},function(data){
if(data.status==1){
$(".inul").html("");
$.each(data.data,function(index,val){
$(".inul").append("
<li>"+val.username+"</li>

");
});
}
},"json");
}
},500);
$(function(){
$(".inul li").live("click",function(){
var thval = $(this).html();
var tla = $("#tla").val();
var regexp = new RegExp(",");
if(regexp.test(tla)){//如果input有值(",")则加上input里面的值
$("#tla").val(tla+thval+",");
}else{
$("#tla").val(thval+",");
}
$(".inul").html("");
$("#tla").focus();
});
});
// ]]></script>

[/code]

PHP代码:

[code lang=”php”]
function input_xiala(){
$input = new input();
$tval = $input->post(‘tla’);
$u = M(‘User’);
if(strpos($tval,",")){//检查是否带有","
$val = explode(",",$tval);//拆分成数组
$tval = end($val);//数组的最后一个值
}
$re = $u->field(‘username,email’)->where("username like ‘$tval%’")->limit(10)->select();
$this->ajaxReturn($re,’success’,1);
}

[/code]