js 代码
//---------------------------------------------------自动补全begin--------------------------------
var maxcount = 0;// 表示他最大的值
var thisCount =0;// 初始化他框的位置
var flagThis = 0;
var flag = 0; //标示是否选择自动补全
//自动补全方法
function zdbq(obj){
var id = obj;
document.getElementById("zdbqid").value = id;
jQuery("#"+id).keyup(function(even) {
document.getElementById("autoTxt").style.width= 214+"px";
var v = even.which;
//回车键:13;上键38;下键40// 当点击上下键或者确定键时阻止他传送数据
if (v == 38 || v == 40 || v == 13){
return;
}
var txt = jQuery("#"+id).val();//这里是取得他的输入框的值
if (txt != "") {
jQuery.ajax({
url : "xxx_xxx.action",//从后台取得json数据
type : "post",
dataType : "json",
data : {"name" : txt
},
success : function(ls) {
flagThis = 1;
var offset = jQuery("#"+id).offset();//offset() 方法返回或设置匹配元素相对于文档的偏移(位置)。
jQuery("#autoTxt").show();
jQuery("#autoTxt").css("top", (offset.top + 22) + "px");
jQuery("#autoTxt").css("left", offset.left + "px");
var Candidate = "";
maxcount = 0;//再重新得值
var list=eval(ls);
jQuery.each(list, function(k, v) {
var nn=(v+"").split(",");
Candidate += "<li style='list-style:none' id='"+maxcount+"'>"+nn[0]+"</li><span id='hhh' style=display:none >"+nn[1]+"</span>";
maxcount++;
});
jQuery("#autoTxt").html(Candidate);
jQuery("#autoTxt li:eq(0)").css("background", "#A8A5A5");//初始化默认选择第一个数据
//当单击某个LI时反映
jQuery("#autoTxt li").click(function(){
flag = 1;//标示是否选择自动补全
var jgname=jQuery("#autoTxt li:eq("+this.id+")").text();//获取名称
var fid = jQuery("#autoTxt span:eq("+thisCount+")").text();//获取id
jQuery("#"+id).val(jgname);//放入名称
$("#jcid").val(fid);//放入id
jQuery("#autoTxt").html("");
jQuery("#autoTxt").hide();
});
//移动对象
jQuery("#autoTxt li").hover(function(){
jQuery("#autoTxt li").css("background", "#FFFFFF");
jQuery("#autoTxt li:eq("+this.id+")").css("background", "#A8A5A5");
thisCount=this.id;},function(){
jQuery("#autoTxt li").css("background", "#FFFFFF");});
},
error : function() {
jQuery("#autoTxt").html("");
jQuery("#autoTxt").hide();
maxcount = 0;
}
});
} else {
jQuery("#autoTxt").html("");
jQuery("#autoTxt").hide();
maxcount = 0;
}
}
);
//=====================自动补全公共部分开始=================================
//当单击BODY时则隐藏搜索值
jQuery("body").click(function(){
jQuery("#autoTxt").html("");
jQuery("#autoTxt").hide();
thisCount=0;
});
}
//键盘选择
jQuery(function(){
//键盘按键移动事件上键38,下键40,确定键13
jQuery("body").keyup(
function(even){
var id = document.getElementById("zdbqid").value;
var v = even.which;
if(38==v){//上键
if(thisCount>0){
--thisCount;
}else{
thisCount = maxcount-1;
}
jQuery("#autoTxt li").css("background", "#FFFFFF");
jQuery("#autoTxt li:eq("+thisCount+")").css("background", "#A8A5A5");
}else if(40==v){//下键
if(thisCount<maxcount-1){
++thisCount;
}else{
thisCount = 0;
}
jQuery("#autoTxt li").css("background", "#FFFFFF");
jQuery("#autoTxt li:eq("+thisCount+")").css("background", "#A8A5A5");
}else if(13==v){//确定键
flag = 1; //标示是否选择自动补全
var jgname=jQuery("#"+thisCount).text();//获取名称
var fid = jQuery("#autoTxt span:eq("+thisCount+")").text();//获取id
if(jgname!=""){
jQuery("#"+id).val(jgname);//放入名称
}
if(fid!=""){
$("#jcid").val(fid);//放入id
}
jQuery("#autoTxt").html("");
jQuery("#autoTxt").hide();
}else {
if(jQuery("#autoTxt").html()!=""){
thisCount=0;
}
}
}
);
});
//---------------------------------------------------自动补全end--------------------------------
body里面需要写的代码
<!-- 自动补全用到的 -->
<!-- 存放名称的id -->
<input type="hidden" value="" name="zdbqid" id="zdbqid"/>
<!-- 显示的div -->
<div style="width:180px; z-index:99999999; display:none; background:#FFFFFF; position: absolute;" id="autoTxt"></div>
在body中使用
onload="zdbq('自动补全input的id');"
只要在后台封装成json对象就行了 详细代码就不展示了,只说一下封装json代码
JSONArray arr=new JSONArray();
Object[] obj = new Object[]{名称,id}; //名称和id传递到前台
arr.add(obj); 相关文章
PhpStorm如何使用代码片段变量
VSCode自定义悬停模板怎么套用?高效开发配置方案
GoLand怎么把代码片段Live Templates保存下来
Sublime Text怎么跳转到自定义代码片段所在的文件
Windows平台Navicat已保存的代码段如何在Linux环境中复用?
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。
100
2026.11.12
本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。
60
2026.11.12
本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。
60
2026.11.12
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
160
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
120
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
120
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
100
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
80
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
100
2026.11.04
热门下载
相关下载
精品课程
共1课时 | 221人学习
共0课时 | 0人学习
共1课时 | 188人学习
最新文章








