js自动补全实例

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;
    }
时间: 2024-08-05 02:17:47

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

js 自动补全

js 代码 //---------------------------------------------------自动补全begin-------------------------------- var maxcount = 0;// 表示他最大的值 var thisCount =0;// 初始化他框的位置 var flagThis = 0; var flag = 0; //标示是否选择自动补全 //自动补全方法 function zdbq(obj){ var id = obj.id; d

JS自动补全

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

easyui-combobox 实现简单的自动补全功能

前台: Html页面 <input id="clsydw" name="clsydw" class="easyui-combobox" data-options="" /> JS //自动补全功能 $("#clsydw").combobox({ valueField:'syr', textField:'syr', panelWidth:200, panelHeight:'auto', onCha

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

转自:http://blog.csdn.net/liyijun4114/article/details/51658087 参考来源: 官方介绍: https://code.visualstudio.com/Docs/runtimes/nodejs#_intellisense-and-typings gyzhao写的”Visual Studio Code 使用 Typings 实现智能提示功能”: http://www.cnblogs.com/IPrograming/p/VsCodeTypings

一个模拟搜索自动补全的实例(超简单)

很早就像写一个模拟Google搜索栏自动补全的实例,那时候刚学点js,css也玩不转,即使网上有些demo,看起来也很费力.写了两次只是勉强能出来待筛选项,不能自由选择.这两天学了点jQuery的ajax,配合一点资料,自己成功实现了这个功能,jQuery的口号真是名副其实----The Write Less, Do More. CSS <style type="text/css" > .listbox{ position: relative; left: 10px; ma

js 实现类似百度联想输入,自动补全功能

js  实现类似百度联想输入,自动补全功能 方案一: search是搜索框id="search" 1 //点击页面隐藏自动补全提示框 2 document.onclick = function (e) { 3 var e = e ? e : window.event; 4 var tar = e.srcElement || e.target; 5 if (tar.id != search) { 6 if ($("#" + auto).is(":visibl

JS实现在输入框内输入@时,邮箱账号自动补全

<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"/> <title>邮箱自动补全</title> <style type="text/css"> .wrap{width:200px;margin:0 auto;} h1{font-size:36px;text-align:center;lin

输入框自动补全功能

在输入框输入信息后,自动提示补全.我选择用typeahead.js,后来发现,原来这个库的相关学习资料很少,搞的稍微有点久,才弄明白点...本文实属原创,如有错误,敬请指教! 简介: 官网:http://twitter.github.io/typeahead.jsgithub: https://github.com/twitter/typeahead.js使用文档:https://www.awesomes.cn/repo/twitter/typeahead-js 在查资料的过程中,不难发现,ty

jquery.autocomplete自动补全功能

项目实例: 一:js //SupplierAutoComplete.js $().ready(function () { $("#txtSupplier").autocomplete("ajax?name=GetSupplierList", { minChars: 1, //在触发autoComplete前用户至少需要输入的字符数.Default: 1,如果设为0,在输入框内双击或者删除输入框内内容时显示列表 max: 10, //autoComplete下拉显示项