今天来介绍一个基于jquery的轻量级自动完成插件--autocomplete
前端代码如下:
<tr>
<th width="80">柜子编号:</th>
<td>
<input type="text" name="sark_number" value="" οnfοcus="do_autocomplete(this);"/>
</td>
</tr>
前端js部分:
/**
* 自动提供柜子编号信息
* 2016.11.14
**/
function do_autocomplete(obj) {
var sark_number = $(obj).val();
$(obj).autocomplete({
autoFocus: true,
minLength: 0,
autoFill: true,
source: 'Transitwms/Transport/search_sark_number?sark_number='+sark_number,
select: function (event, ui) {
$(obj).val(ui.item.sark_number);
$(obj).attr("readonly", "readonly");
}
});
}
控制器层:
/**
* 查询相似的柜子编号
* khq 2016.11.14
*/
public function search_sark_number(){
$sark_number = mysql_escape_string($_GET['term']);
$sark_numbers = D('transport','Model')->get_transport_field(
'sark_number',"sark_number like '%".$sark_number."%'"); //模糊查到柜子编号二维数组
$sark_numbers = D('transport','Service')
->array_unique_fb($sark_numbers); //二维数组去重
$re[]=array();
if($sark_numbers){
foreach($sark_numbers as $key => $val){
$re[] = array(
'label' => $val[0],
'sark_number' => $val[0]
);
}
}
echo json_encode($re);
exit;
}
附带上Service层的二维数组去重方法:
/**
* @param $array2D -需要过滤的二维数组
* @return array -过滤后的二维数组
* 二维数组去掉重复值
* 2016.11.14
*/
function array_unique_fb($array2D){
foreach ($array2D as $v){
$v=implode(',',$v); //降维,将一维数组转换为用逗号连接的字符串
$temp[]=$v;
}
$temp=array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
foreach ($temp as $k => $v){
$temp[$k]=explode(',',$v); //再将拆开的数组重新组装
}
return $temp;
}
界面效果图: