var oInputField ,oPopDiv , oColorsUl,aColors;
//初始化变量
function initVars(modelId,divId,ulId){
oInputField = document.getElementById(modelId);
oPopDiv = document.getElementById(divId);
oColorsUl = document.getElementById(ulId);
} //查机种、料号 自动补全
function findModel(div_id,ul_id,model_id,form_id,p_cbo_id){
var keyCode = event.keyCode;
var arrayStr ='';
initVars(model_id,div_id,ul_id);
var aResult = new Array(); //用于存放匹配结果
var params = document.getElementById(model_id).value; //序列化表格数据"myForm1"为表格的id
if((keyCode >= 65 && keyCode <= 90) || (keyCode >= 48 && keyCode <= 57) || keyCode == 8 || keyCode == 46){//要过滤的键位 字母、数字、删除键
if(oInputField.value.length >= 2){//超过两位开始查
$.ajax({
type:'post',
data:{'modelName':params},
dataType:'json',
url:'queryPart.action',
success:function(data) {
if(data == "error" || data == null || data == ""){
clearModel();
return;
}
document.getElementById(div_id).style.display = 'block';
$.each(data,function(index,element){
arrayStr +=element.model_name+','+element.part_no+','+element.route_id+'$';
});
aResult = arrayStr.split("$");
setModel(model_id,div_id,aResult,p_cbo_id);
}
});
}else{
clearModel();//无输入时清除提示框
}
}
}
//清除提示内容
function clearModel(){
for(var i = oColorsUl.childNodes.length - 1 ; i >= 0 ; i-- )
oColorsUl.removeChild(oColorsUl.childNodes[i]);
oPopDiv.className = "hide";
}
//设置自动补全数据
function setModel(modelId,divId,the_models,p_cbo_id){
//显示提示框、传入的参数即为匹配出来的结果组成的数组
clearModel();//每输入一个字母就先清除原先的提示、再继续
oPopDiv.className = "show";
var oLi; for(var i = 0 ; i < the_models.length ; i++ ){
//将匹配的提示结果逐一显示给用户
oLi = document.createElement("li");
oColorsUl.appendChild(oLi);
oLi.appendChild(document.createTextNode(the_models[i])); oLi.onmouseover = function(){
this.className = "mouseOver" ; //鼠标指针经过时高亮
}
oLi.onmouseout = function(){
this.className = "mouseOut" ; //鼠标指针离开时恢复原样
}
oLi.onclick = function(){
//用户单击某个匹配项时、设置输入框为该项的值
oInputField.value = this.firstChild.nodeValue;
clearModel();//同时清除提示框
document.getElementById(divId).style.display = 'none';
getProcessNames(modelId,p_cbo_id);
}
}
}

JSP代码:

<s:textfield title="请输入机种关键字,至少两位"  name="modelName" size="30" id="model_id" onkeyup="findModel('popup_wip','model_colors_ul_wip',this.id,'queryWIPForm','p_cbo_id_wip');" cssClass="required"></s:textfield>
<div id="popup_wip">
<ul id="model_colors_ul_wip"></ul>
</div>

CSS样式代码

<style>
<!--
#popup_wip{
/*提示框div块的样式*/
position: absolute; width: 200px;
color: #004a7e; font-size: 12px;
font-family: Arial,Helvetica,sans-serif;
left: 43px; top: 28px;
background-color: #E6EAE9;
overflow:auto;
height: 50px;
display: none;
}
#popup_wip.show{
/*显示提示框的边框*/
border: 1px solid #004a7e;
}
#popup_wip.hide{
/*隐藏提示框的边框*/
border: none;
}
/*提示框的样式风格*/
ul{
list-style: none;
margin: 0px; padding: 0px;
}
li.mouseOver{
background-color: #004a7e;
color: #FFFFFF;
}
li.mouseOut{
background-color: #FFFFFF;
color: #004a7e;
}
-->
</style>

Action代码:

private List<Map<String,Object>> listParts;
public void queryPart(){
IQueryDAO query = new IQueryDAOImpl();
listPartMaps = query.queryPart(modelName.toUpperCase());
JSONArray jsonArray = JSONArray.fromObject(listPartMaps);
try {
ServletActionContext.getResponse().getWriter().print(jsonArray);
} catch (IOException e) {
e.printStackTrace();
}
}

DAO代码:

    public List<Map<String,Object>> queryPart(String modelName) {
db = new DBManager();
String sql ="select part_id,model_name,part_no,route_id from sajet.sys_part where upper(model_name) like upper(?) and enabled ='Y' ORDER BY MODEL_NAME";
List<Map<String,Object>> listPart = new ArrayList<Map<String,Object>>();
try {
connection = db.GetOraConnection();
pstmt = connection.prepareStatement(sql);
pstmt.setString(1, modelName+"%");
rs = pstmt.executeQuery();
while(rs.next()){
Map<String,Object> map = new HashMap<String,Object>();
map.put("part_id", rs.getInt("part_id"));
map.put("model_name", rs.getString("model_name"));
map.put("route_id", rs.getInt("route_id"));
map.put("part_no", rs.getString("part_no"));
listPart.add(map);
}
} catch (SQLException e) {
log.error("查询机种时出错:"+e.getMessage());
e.printStackTrace();
}finally{
db.closeConnection(connection, rs, pstmt);
}
return listPart;
}

js自动补全实例的更多相关文章

  1. js自动补全空白列(即缺少td的列)

    //自动补全空白列 var rows = document.getElementById("gridTable").rows; //行对象 var allcells = rows[ ...

  2. js自动补全

    <!doctype html> <html> <style> body { margin-left: 0px; margin-top: 0px; margin-ri ...

  3. 原创js自动补全---auotocomplete

    if ($("input.autocomplete_input").length > 0) { $("input.autocomplete_input") ...

  4. Visual Studio Code使用typings拓展自动补全功能

    转自:http://blog.csdn.net/liyijun4114/article/details/51658087 参考来源: 官方介绍: https://code.visualstudio.c ...

  5. js邮箱自动补全

    邮箱自动补全js和jQuery html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  6. jquery input 搜索自动补全、typeahead.js

    最近做个一个功能需要用到自动补全,然后在网上找了很久,踩了各种的坑 最后用typeahead.js这个插件,经过自己的测试完美实现 使用方法:在页面中引入jquery.jquery.typeahead ...

  7. jQuery搜索框自动补全功能插件实现-autocomplete.js

    最近用nodeclub实现股票的输入关键字自动补全股票信息进行搜索功能,原先用jQuery-ui,结果jQuery-ui库太大,所以考虑用其他插件,最终选择使用autocomplete.js,控件简单 ...

  8. jQuery AutoComplete 自动补全

    jQuery.AutoComplete是一个基于jQuery的自动补全插件.借助于jQuery优秀的跨浏览器特性,可以兼容Chrome/IE/Firefox/Opera/Safari等多种浏览器. 特 ...

  9. jquery.autocomplete自动补全功能

    项目实例: 一:js //SupplierAutoComplete.js $().ready(function () { $("#txtSupplier").autocomplet ...

随机推荐

  1. linux删除特殊字符命名的文件

    今天在服务器上不小心创建了一个!命名的文件还有一个\命名的文件,本来想用转义字符进行删除,又担心误删了项目文件....最后找到最好的解决办法 如下: ls -i  查看文件inum值 执行删除inum ...

  2. python开发学习-day15(前端部分知识、web框架、Django创建项目)

    s12-20160430-day15 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  3. 修改web.config来开启Gzip压缩

    IIS 7.0之后引入的一个IIS配置文件,详细内容参考官方链接http://www.iis.net/learn/get-started /planning-your-iis-architecture ...

  4. Linux下安装Zookeeper

    Zookeeper是一个协调服务,可以用它来作为配置维护.名字服务.分布式部署: 下面,我来分享一下在Linux下安装Zookeeper的整个步骤,让大家少走弯路. 一.Zookeeper下载 [ro ...

  5. Visual Studio 2017强制更新方法

    Visual Studio 2017强制更新方法   Visual Studio 2017更新时候,用户都是根据消息提示,进行更新.这样做的好处,就是微软可以分批下发升级包,避免集中更新.不过为了早点 ...

  6. interrupt_control

    中断的概念CPU在处理过程中,经常需要同外部设备进行交互,交互的方式由“轮询方式”“中断方式” 轮询方式: 方式:在同外设进行交互的过程中,CPU每隔一定的时间状态就去查询相关的状态位,所以在交互期间 ...

  7. xml javascript

    1.XMLHttpRequest对象 创建XMLHttpRequest对象 xmlhttp=new XMLHttpRequest(); ##老版本的 Internet Explorer (IE5 和 ...

  8. linux服务器安装swoole扩展

    说明: swoole只能用在LInux,macos系统上,不能用作Windows系统上 2.0.12版本开始不再支持PHP5 安装方式一:pecl安装 适用于php7.0以上版本 centOS中: # ...

  9. BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 4750  Solved: 2145[Submi ...

  10. ASP.NET MVC 手机短信验证

    本文来自于stoneniqiu的文章,原文地址 http://www.cnblogs.com/stoneniqiu/p/6234002.html 1.注册一个应用 得到AppKey 和 App Sec ...