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;
}
js自动补全实例的更多相关文章
- js自动补全空白列(即缺少td的列)
//自动补全空白列 var rows = document.getElementById("gridTable").rows; //行对象 var allcells = rows[ ...
- js自动补全
<!doctype html> <html> <style> body { margin-left: 0px; margin-top: 0px; margin-ri ...
- 原创js自动补全---auotocomplete
if ($("input.autocomplete_input").length > 0) { $("input.autocomplete_input") ...
- Visual Studio Code使用typings拓展自动补全功能
转自:http://blog.csdn.net/liyijun4114/article/details/51658087 参考来源: 官方介绍: https://code.visualstudio.c ...
- js邮箱自动补全
邮箱自动补全js和jQuery html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- jquery input 搜索自动补全、typeahead.js
最近做个一个功能需要用到自动补全,然后在网上找了很久,踩了各种的坑 最后用typeahead.js这个插件,经过自己的测试完美实现 使用方法:在页面中引入jquery.jquery.typeahead ...
- jQuery搜索框自动补全功能插件实现-autocomplete.js
最近用nodeclub实现股票的输入关键字自动补全股票信息进行搜索功能,原先用jQuery-ui,结果jQuery-ui库太大,所以考虑用其他插件,最终选择使用autocomplete.js,控件简单 ...
- jQuery AutoComplete 自动补全
jQuery.AutoComplete是一个基于jQuery的自动补全插件.借助于jQuery优秀的跨浏览器特性,可以兼容Chrome/IE/Firefox/Opera/Safari等多种浏览器. 特 ...
- jquery.autocomplete自动补全功能
项目实例: 一:js //SupplierAutoComplete.js $().ready(function () { $("#txtSupplier").autocomplet ...
随机推荐
- sql server2012 企业版 百度云下载
链接: https://pan.baidu.com/s/1j7a6RWwpvSzG-sF7Dnexfw 提取码: 关注公众号[GitHubCN]回复获取
- HDU 3530 单调队列
题目大意:给你n个数, 让你问你最长的满足要求的区间有多长,区间要求:MAX - MIN >= m && MAX - MIN <= k 思路:单调队列维护递增和递减,在加入 ...
- yum安装(sentos7)
之前我的yum一直出问题,我就重装了yum,这个教程是我亲自测试过,有用的. 链接:http://blog.csdn.net/iamhuanggua/article/details/60140867 ...
- 【定时任务】Spring Boot 中如何使用 Quartz
这篇文章将介绍如何在Spring Boot 中使用Quartz. 一.首先在 pom.xml 中添加 Quartz 依赖. <!-- quartz依赖 --> <dependency ...
- 预备作业02 : 体会做中学(Learning By Doing)
1.你有什么技能比大多人(超过班级90%以上)更好? 如果说不算上玩玻璃球在诸如此类不登大雅之堂的技能,我想我是没有什么比大多数人更好的.我的兴趣还算广泛,但很多东西也只是学到了皮毛而已. 在我上初中 ...
- NOIP2018游记(更新完毕)
10.13 初赛 Day -1 考前 这一次的考场从暗♂德华兴改到了长沙市一中,一进去:我一看,考场在哪???这一中比长郡大了好多,而且连指示牌都没有,这时碰见了谢总,谢总告诉我们在第二教学楼.路上还 ...
- ARM Linux 驱动Input子系统之按键驱动测试
上一篇已经谈过,在现内核的中引入设备树之后对于内核驱动的编写,主要集中在硬件接口的配置上了即xxxx.dts文件的编写. 在自己的开发板上移植按键驱动: 1.根据开发板的原理图 确定按键的硬件接口为: ...
- [leetcode DP]91. Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- JavaSE基础之矩阵运算
JavaSE基础之矩阵运算 1.矩阵类:Matrix.java 包括矩阵的加.乘运算,行列式的求解,最大最小元素等 package cn.com.zfc.help; import java.text. ...
- [Hdu4372] Count the Buildings
[Hdu4372] Count the Buildings Description There are N buildings standing in a straight line in the C ...