实现点击和输入搜索联想,把搜索出的列表放到下面的ul列表中,然后再列表中选择并把公司名赋值给输入框,把guid赋值给隐藏域

html

<input type="hidden" name="CompanyGuid" value="" id="CompanyGuid"/>
<div class="form-group clearfix">
<label for="inline" class="inline fl">公司名称:</label>
<div class="autoSupRelative fl">
<input type="text" class="input" name="CompanyName" id="CompanyName" autocomplete="off">
<ul class="autoSupAbsolute"></ul>
</div>
</div>

css样式

.autoSupRelative{position: relative;padding:;float:left;z-index:;}
.autoSupAbsolute{position: absolute;left:;top:30px;background: #ffffff;border:1px solid #ccc;width:100%;max-height:240px;overflow-y: auto;margin:;padding:;box-shadow: 0px 2px 2px #ccc;display: none}
.autoSupAbsolute li{ list-style: none;cursor: pointer;padding: 5px;line-height: 22px;font-size: 12px;}
.autoSupAbsolute li:hover{background: #2dc3e8;color: #ffffff;}

js

//模糊查询
function SearchLike(jsons) {
//var timerSerch = null;
$(document).on('keyup', '[name=' + jsons.name + ']', function () {
var This = this;
this.timerSerch = setTimeout(function () {//如果一直输入,就先不查询,等键抬起500毫秒之后再进行查询。
getSearchValue({
This: This,
Event: "keyup",
url: jsons.url,
fun: jsons.fun
});
}, 500);
$(this).parents('.autoSupRelative').find('.autoSupAbsolute').show();
});
$(document).on('keydown', '[name=' + jsons.name + ']', function () {
var _this = this;
clearTimeout(_this.timerSerch); });
$(document).on('click', '.autoSupAbsolute li', function (e) {
var name = $(this).parents('.autoSupRelative').find('input[type=text]').attr('name');
if (name == jsons.name) {
var thisHtml = $(this).attr('companyName');//.replace('<span style="display: none; width: 0px; height: 0px;" id="transmark"></span>', '');//.split('<span')[0];
// thisHtml = thisHtml.split(',')[0];
if (jsons.HideName) {
$(this).parents('.autoSupRelative').find('[name=' + jsons.HideName + ']').val($(this).attr("PK_Guid"));
}
if (thisHtml) {
$(this).parents('.autoSupRelative').find('[name=' + jsons.name + ']').val(thisHtml);
}
if (jsons.fun1) {
jsons.fun1(this);
}
$(this).parents('.autoSupRelative').find('[name=' + jsons.name + ']').siblings('ul').html('');
$(this).parents('.autoSupAbsolute').hide();
}
}); // $('[name=' + jsons.name + ']').on('click', function (e) {
$(document).on('click', '[name=' + jsons.name + ']', function (e) { e.stopPropagation();
var This = this;
$('.autoSupRelative').css({ 'zIndex': '99' });
$(this).parents('.autoSupRelative').css({ 'zIndex': '100' });
$(this).parents('.autoSupRelative').find('.autoSupAbsolute').show();
// if ($(this).parents('.autoSupRelative').find('ul li').length ==0) {//如果没有输入字段,就不重新检索
$(this).parents('.autoSupRelative').find('ul').html('<div style="padding:0 10px;">数据加载,请稍后....</div>');
getSearchValue({
This: This,
Event: "click",
url: jsons.url,
fun: jsons.fun
});
// }
}).on("blur", function () {
$('.autoSupRelative').css({ 'zIndex': '' });
});
$(document).on('click', function (e) {
$('.autoSupAbsolute').hide();
}); function getSearchValue(json) {
if (jsons.setUrl) {
//jsons.setUrl();
json.url = jsons.setUrl();
}
$.ajaxSetup({ cache: false });
$.ajax(
{
type: "GET",//POST
url: json.url + encodeURIComponent($(json.This).val()),
success: function (msg) {
var htmlInit = '';
//if (msg != "") {
msg = JSON.stringify(msg)
msg = msg.replace(/'/g, '"');//把单引号替换成双引号
//var datas = jQuery.parseJSON(msg);
var datas = []
datas = jQuery.parseJSON(msg).result;
var html = '';
if (json.Event == 'click') {
if (datas.length == 0) {
$(json.This).next().val('');//清除隐藏域的赋值
htmlInit = '<div style="text-align:center">未找到此项....</div>';
} else {
for (var i = 0; i < datas.length; i++) {
if (json.fun) {
htmlInit += json.fun(datas[i]);
} else {
htmlInit += '<li PK_Guid="' + datas[i].companyGuid + '"companyName="' + datas[i].companyName + '">' + datas[i].companyName + '</li>';
}
}
}
$(json.This).parents('.autoSupRelative').find('.autoSupAbsolute').html(htmlInit);
$(json.This).parents('.autoSupRelative').find('.autoSupAbsolute').show();
}
if (json.Event == 'keyup') {
if ($(json.This).val() == '') {
$(json.This).parents('.autoSupRelative').find('ul').html('');
$(json.This).parents('.autoSupRelative').find('.autoSupAbsolute').hide();
} else {
if (datas.length == 0) {
$(json.This).next().val('');//清除隐藏域的赋值
html = '<div style="text-align:center">未找到此项....</div>';
} else {
for (var i = 0; i < datas.length; i++) {
if (json.fun) {
html += json.fun(datas[i]);
} else {
html += '<li PK_Guid="' + datas[i].companyGuid + '" companyName="' + datas[i].companyName + '">' + datas[i].companyName + '</li>';
}
}
}
$(json.This).parents('.autoSupRelative').find('.autoSupAbsolute').html(html);
}
}
// }
},
error: function () {
$(json.This).parents('.autoSupRelative').find('ul').html('<div style="padding:10px;">数据加载失败....</div>');
}
}
);
}
} // 使用--点击输入框,请求接口--url是联想搜索接口,companyName没有值的时候显示所有的列表--下拉列表选择把姓名和id复制给input
SearchLike({
name: 'CompanyName', url: '/CompanyCustomBill/CompanySimpInfo?companyName=', fun1: function (_this) {
$("#CompanyName").val($(_this).attr('companyName'));
$("[name=CompanyGuid]").val($(_this).attr('PK_Guid'));
}
});

js实现输入框联想搜索的更多相关文章

  1. input输入框联想功能

    一直想找一个可以连接后台,可以根据后台内容的input输入框,可以实现联想功能,网上找到一个简单的静态页面的输入框联想,经过一番修改之后终于可以实现读取自己定义的数组的联想了,其实也比较简单就是格式的 ...

  2. js jq输入框中按回车触发提交事件,用户在页面输入后按回车(Enter键)进行

    js jq输入框中按回车触发提交事件,用户在页面输入后按回车(Enter键)进行 代码如下: <!DOCTYPE html> <html lang="en" xm ...

  3. js限制输入框只能输入数字

    分享下js限制输入框中只能输入数字的方法,包括整数与小数,分享几个例子,有需要的朋友参考下. 1.使用正则表达式限制输入框只能输入数字: <input type="text" ...

  4. JS常用正则表达式和JS控制输入框输入限制(数字、汉字、字符)

    验证数字:^[0-9]*$验证n位的数字:^\d{n}$验证至少n位数字:^\d{n,}$验证m-n位的数字:^\d{m,n}$验证零和非零开头的数字:^(0|[1-9][0-9]*)$验证有两位小数 ...

  5. JS 文本输入框放大镜效果

    JS 文本输入框放大镜效果 今天下午研究了下 "文本输入框放大镜效果" 当然KISSY官网也有这种组件 请看kissy demo 其实这种效果 对于很多童鞋来说 应该并不陌生!我今 ...

  6. JS判断输入框值是否为空

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. [大数据]-Elasticsearch5.3.1 IK分词,同义词/联想搜索设置

    --题外话:最近发现了一些问题,一些高搜索量的东西相当一部分没有价值.发现大部分是一些问题的错误日志.而我是个比较爱贴图的.搜索引擎的检索会将我们的博文文本分词.所以图片内容一般是检索不到的,也就是说 ...

  8. js格式化输入框内金额、银行卡号[转]

    这篇文章主要介绍了js格式化输入框内金额.银行卡号,采用“keyup”事件处理格式化,每4位数一组中间空格隔开,如何格式化输入框内金额.银行卡号,需要了解的朋友可以参考一下 我们在项目中经常遇到需要格 ...

  9. Elasticsearch5.3.1 IK分词,同义词/联想搜索设置

    [大数据]-Elasticsearch5.3.1 IK分词,同义词/联想搜索设置  原文地址:http://www.cnblogs.com/NextNight/p/6837407.html --题外话 ...

随机推荐

  1. Python操作redis字符串(String)详解 (三)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置 ...

  2. 使用 log4j 2记录日志

    log4j2使用方法还是很简单的 1 需要使用的jar包有两个, 1)log4j-api-2.8.2.jar 2)log4j-core-2.8.2.jar 2 产生Logger 对象非常的简单,使用  ...

  3. vue 发送ajax请求

    一. 简介 1.vue本身不支持发送AJAX请求,需要使用vue-resource(vue1.0版本).axios(vue2.0版本)等插件实现 2.axios是一个基于Promise的HTTP请求客 ...

  4. blender, 同时选择多个顶点

    法1:按MRB(鼠标右键)选中第一个顶点,再按shift+MRB依次选择其余顶点. 法2:按B,光标变为横纵两条虚线,此时可按MLB(鼠标左键)框选顶点.按MRB结束框选. 法3:按C,光标变为虚线圆 ...

  5. Redis(十六):集群搭建(手动和自动)

    一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):slave->master ...

  6. 获取http内容的php函数

    实现获取http内容的php函数. 代码如下: <?php function http_open($url, $data, $cookie = null, $method = "GET ...

  7. [svc]linux buffer和cache的区别

    通俗理解buffer,cache Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 ...

  8. ZOJ 2610 Puzzle 模拟

    大模拟:枚举6个方向.检查每一个0是否能移动 Puzzle Time Limit: 2 Seconds      Memory Limit: 65536 KB Little Georgie likes ...

  9. jquery 获取绑定事件

    在1.8.0版本之前,我们要想获取某个DOM绑定的事件处理程序可以这样: 1 $.data(domObj,'events');//或者$('selector').data('events') 而从1. ...

  10. C语言 面试

    P1(多选)有如下定义 int a; int *b; 则下列哪些语句是正确的:A: b=&a;B: b=*a;C: b=(int*)a;D: *b=a; 思路如下:b是一个int类型指针,a是 ...