做搜索功能的时候,经常遇到输入框检查的需求,最常见的是即时搜索,今天好好小结一下。

即时搜索的方案:

(1)change事件    触发事件必须满足两个条件:

a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效)
b)当前对象失去焦点(onblur)
 (2)keypress  恩,还好。。。。。就是能监听键盘事件,鼠标复制黏贴操作他就无能为力的赶脚了。。。。。
 (3)propertychange(ie)和input事件
input是标准的浏览器事件,一般应用于input元素,当input的value发生变化就会发生,无论是键盘输入还是鼠标黏贴的改变都能及时监听到变化

propertychange,只要当前对象属性发生改变。

比如一个input输入文字后出现下拉框,如图:

当输入框里面内容为空时,下拉框要隐藏,可以通过input和propertychange方法实现,代码如下:

  1. <script>
  2. $("#search").bind("input propertychange",function(){
  3. var value=$(this).val();
  4. if(value){
  5. $(".pc_search ul").show();
  6. }else{
  7. $(".pc_search ul").hide();
  8. }
  9. });
  10. </script>

这里bind同时绑定了input和propertychange两个方法。

自己项目的例子

//input输入框改变时
$("input[id='search-input']").bind('input propertychange', function() {
var val = $(this).val();
val = val.replace(/\s/g, '');
/*var arr = val.split(''+query+'');
console.log(arr);
if(val==query){
return false;
}*/
$(".re-search-tips").children('li').remove();
if (val !== "") {
$(".re-del").removeClass('disnone');
}
if (val == "" && query !== "") {
$(".re-search-tips").children('li').remove();
$(".re-search-tips li:contains('" + query + "')").html($(".re-search-tips li:contains('" + query + "')").html().replace(new RegExp('<span>' + query + '</span>', 'g'), '' + query + ''));
}
search(val);
});
//搜索教练
function search(val) {
query = val;
temp = query;
if (query !== "") {
$.ajax({
async: false,
url: getv1 + 'schedule/coachs',
type: 'GET',
dataType: 'json',
data: { query: query },
success: function(res) {
var qulen = res.data.length;
if (qulen > 0) {
var qulist = "";
for (var m = 0; m < qulen; m++) {
var conume = res.data[m].coachNum;
var name = res.data[m].name;
qulist += '<li><a href="subinfo.html?conum=' + conume + '">' + name + '</a></li>';
}
$(".re-search-tips").append(qulist);
var lilen = $(".re-search-tips").children('li').length;
console.log(lilen);
for(var q=0 ;q<lilen;q++){
$(".re-search-tips li:eq('"+q+"'):contains('" + query + "')").html($(".re-search-tips li:eq('"+q+"'):contains('" + query + "')").html().replace(new RegExp(query, 'g'), '<span>' + query + '</span>'));
}
/* $(".re-search-tips li:contains('" + query + "')").html($(".re-search-tips li:contains('" + query + "')").html().replace(new RegExp(query, 'g'), '<span>' + query + '</span>'));*/
}
},
error: function() {
layer.msg("服务器正忙碌,请稍后再试");
}
});
}
} //删除input框里面的值
function del() {
$("input[id='search-input']").val("");
$(".re-search-tips").children('li').remove();
$(".re-search-tips li:contains('" + query + "')").html($(".re-search-tips li:contains('" + query + "')").html().replace(new RegExp('<span>' + query + '</span>', 'g'), '' + query + ''));
}

  

input事件在进行模糊搜索时,用到的即时监测input的值变化的方法(即时搜索的input和propertychange方法)的更多相关文章

  1. input事件以及中文输入法的处理

    在项目的开发过程中,相信大家都处理过监听用户输入的事情,一般我们会用到onkeyup.onkeydown.onkeypress.onchange.oninput事件,虽然都很熟悉了,但是还是有必要巩固 ...

  2. input 类型为number型时,maxlength不生效?

    input 类型为number型时,maxlength不生效? 可以加oninput属性来控制最大长度:<input id="numInput" type="num ...

  3. 使用disavled属性锁定input内容不可以修改后,打印获取不到对应的值

    当我们需要锁定input内容不让修改时,可以使用disabled="disabled"和readonly="readonly", 官方的解释是:disabled ...

  4. input输入中文时,拼音在输入框内会触发input事件的问题。

    问题描述: 监听文本输入框的input事件,在拼写汉字(输入法)但汉字并未实际填充到文本框中(选词)时会触发input事件,如图: 需要完成的需求就是在输入阶段不触发input中的事件,选词之后文字落 ...

  5. input中的内容改变时触发的事件

    input中的内容改变时触发的事件 1. onchange事件与onpropertychange事件的区别: onchange事件在内容改变(两次内容有可能相等)且失去焦点时触发:onproperty ...

  6. 当input中的内容改变时触发的事件

    当input中的内容改变时触发的事件 1 $('#id').bind('input propertychange', function() { //处理内容 } 循环js事件 $(document). ...

  7. input、textarea等输入框输入中文时,拼音在输入框内会触发input事件的问题

    监听文本输入框的input事件,在拼写汉字(输入法)但汉字并未实际填充到文本框中(选词)时会触发input事件,如图: 但是在很多情况下,只需要输入到输入框的中文字符. 解决办法: 通过查阅资料得知在 ...

  8. HTML5 input事件检测输入框变化

    之前一直用change事件来监听输入框内容是否发生变化,只有当输入框失去焦点时才会触发,没想到html5还有个input事件,只要输入框内容发生变化就会立即触发,既然有这么好的东西我们干嘛放着不用呢, ...

  9. 利用input事件来监听移动端的输入

    今天遇到一个新需求,经理要求评论功能需要限制字数,就像微博那样限制最多输入150字,这里就需要实时提醒用户还能输入多少字了. 在最开始的时候,想到的是监听keyup事件,然后计算用户输入的字数,但是有 ...

随机推荐

  1. [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”

    [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...

  2. 【IntelliJ IDEA学习之八】版本控制之SVN

    版本:IntelliJIDEA2018.1.4 一.SVN1.安装SVN客户端,command line client tools默认是不安装的,这里要勾选上(不用重新卸载安装,只找到安装程序,选择  ...

  3. Nginx 整合 Lua 实现动态生成缩略图

    原文地址:Nginx 整合 Lua 实现动态生成缩略图 博客地址:http://www.extlight.com 一.前提 最近在开发一个项目,涉及到缩略图的功能,常见的生成缩略图的方案有以下几个: ...

  4. spark 读取 ftp

    class FtpShow(spark: SparkSession, map: Map[String, String]) { private val path = map(FtpOptions.PAT ...

  5. python数据分析4之自动采集数据

    1 数据采集的重要性 数据采集是数据挖掘的基础,没有数据,挖掘也没有意义.很多时候,我们拥有多少数据源,多少数据量,以及数据质量如何,将决定我们挖掘产出的成果会怎样 2 四类采集方式 3 如何使用开放 ...

  6. Alpha冲刺(7/10)——2019.4.29

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...

  7. Python的WEB框架

    Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. ? 1 2 ...

  8. 微信公众号 --- 获取access_token

    获取access_token 在左侧菜单栏中也可以找到 可以一步步的进行设置  ,  身份验证的时候要 注意:密码是你创建微信公众号的密码 往一步步的执行就可以了 接下来就是获取ip 白名单,进行设置 ...

  9. Unsafe API介绍及其使用

      废话 个人理解:java 出现的原因之一,就是对内存的管理:在c/c++,内存可以随心使用,超高的性能也伴有极高的风险:java极大的规避了这种风险,却也降低了程序运行的性能:那么java是否提供 ...

  10. Java学习:常量和变量 的定义和注意事项

    常量:在程序运行期间,固定不变的量. 常量的分类:1.字符串常量:凡是用双引号引起来的部分,叫做字符串常量. 例如:"abc","Hello","12 ...