搜索提示时jquery的focusout和click事件冲突问题完美解决

  在主流的搜索引擎上搜索时,输入内容,往往会弹出智能提示。输入框为input,智能提示区域为suggest。接下来一般有两种操作:

  1.选择某一提示,则把内容复制到input中,自动关闭suggest;

  2.点击网页其他地方,自动关闭suggest。

  实现第一个可以用click事件,在suggest中增加鼠标click事件,在处理中将点击的内容写到input中,然后关闭suggest。单独测试无问题;实现第二个可以在input元素上增加focusout事件或者blur事件,在input中丢失焦点的时候,关闭suggest。单独测试无问题。但是放在一起的时候,就会出现问题,只响应了丢失焦点事件(关闭了suggest),却没有响应内容点击事件(没有获取点击的suggest内容)。不明白为什么会冲突,在网上搜,也搜到了一些同样的问题,有人建议使用blur,但是blur跟focusout是一样的道理,都不行。

       思前想后,忽然想到click事件的触发条件,你点击一个按键,触发一次点击事件,而一次点击包括:鼠标点下去,鼠标松开。而jquery的click事件是鼠标松开后才触发的(事实上button元素和href元素的点击事件都是这样),这样一想就明白刚刚出现的冲突问题了,你点中suggest中的某一提示,这时候input丢失焦点事件触发,关闭了suggest区域,而这个时候你的鼠标才松开(电脑反应速度要快于鼠标点击松开速度),完成点击,但此时鼠标已经不在suggest要选择的提示上面了,所以也就无法触发suggest里的点击事件。

        想明白了这点,问题就好解决了,把suggest中的响应事假改成mousedown,这样在鼠标点的时候就会触发,测试了一下,果然成功了,mousedown事件和focusout事件都得到了正确处理。

//input的丢失焦点事件
$("#input_area").focusout(function(){$("#suggest_div").hide();
});//suggest区域的点击事件
$("#suggest_div li").mousedown(function(){$("#input_area").val($(this).text());$("#suggest_div").hide();
});

       将click换成mousedown就完全ok了,简单到我都不好意思说,但是有的时候,也不容易想到哇!

 

       另外,在网上还找到了别的方法,一个是

$("#input_area").keypress(function() {$("#suggest_div").slideDown();}).blur(function() {$("#suggest_div").slideUp();});

       这种方法用隐藏动画造成了延迟,使得suggest区域的click事件可以触发。但是slide可不适应所有情况,而且把功能成功与否建立在动画隐藏的速度快慢上,个人觉得也不太合适。

       另一种方法是将input和suggest用一个div包起来,事件直接加在div上面。这个未测试过,不过理论上应该也是可行的。

 

转载于:https://www.cnblogs.com/zhaock/archive/2013/04/25/8353236.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高可用MySQL MHA介绍

MySQL MHA介绍 MHA简介 MHA是一位日本MySQL大牛用Perl写一套MySQL故障切换方案,来保证数据库系统的高可用,在宕机的事件内(通常10-30秒),完成故障转意,部署MHA,可避免主从一致性问题&#xff0c…

Tizen有用的网站

Tizen的会议上周在旧金山,打开网页,因为向公众Tizen的开发人员手机现在有很多未来的相关信息。 与其他现在介绍一些有用的网站获取相关信息。 1 Tizen.org https://www.tizen.org/另一种是现在的官方网站。 开放haetguyo,写在九月底&#xff…

Xtrabackup安装以及应用

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。 xtrabackup官方网址:https://www.percona.com/downloads/XtraBackup/MySQL Ba…

控件列[Coolite]上传文件

首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责 1 .配置及单简局布 2.经常用使组件绍介 2.1 Dropdownlist结合TreePanel 2.2 拟模进度条 2.3 上传文件 2.4 TabPanel基本用法 2.5 行执台后程序示提等待息信,运行终了消逝 2.6 历遍清空ext.net textbox控…

MySQL双主配置

双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。 1. 可以做灾备,其中一个坏了可以切换到另一个。 2. 可以做负载均衡&…

Ubuntu 12.10连接米2

通过USB线与米2手机连接后,在终端运行:lsusb 会看到一个新的USB设备,包含信息:2717:9039 首先在/etc/udev/rules.d/目录下面创建一个文件:52-android.rules (名称为51,52,53都无所谓…

MySQL常见错误代码(转)

MySQL常见错误代码及代码说明 1005&#xff1a;创建表失败 1006&#xff1a;创建数据库失败 1007&#xff1a;数据库已存在&#xff0c;创建数据库失败<可以忽略 1008&#xff1a;数据库不存在&#xff0c;删除数据库失败<可以忽略 1009&#xff1a;不能删除数据库文件导…

DSPBuilder笔记

一、位宽设置 在DSPBuilder中&#xff0c;数据在内部采用二进制定点数表示方法&#xff0c;数据可以设置成无符号整数、有符号整数和有符号小数等&#xff0c;其中有符号数由符号位、整数位和小数位组成&#xff08;有符号整数的小数位为0&#xff09;&#xff0c;位宽根据需求…

MySQL主从复制原理、半同步操作步骤及原理

1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1、scp/sftp/nc 命令可以实现远程数据同步。2、搭建ftp/http/svn/nfs 服务器&#xff0c;然后在客户端上也可以把数据同步到服务器。3、搭建samba文件共享服务&#xff0c;然后在客户端上也可以把数据同步到服…

基于.Net 写我自己的Ajax后台框架AjaxFramework

小小目录: 为什么要写自己的Ajax后台框架 框架的简单设计说明 框架如何使用 框架使用效果图 框架的优缺点 框架源码下载1、为什么要写自己的Ajax后台框架 现在Ajax在web应用方面已经用的稀巴烂了&#xff0c;如果你做一个网站没有用到ajax都不好意思拿出手&…

MySQL备份恢复与日志

MySQL 数据库的备份与恢复 1.1 备份数据的意义 第一是保护公司的数据&#xff0c;第二是网站7*24小时提供服务1.2 备份单个数据库参数使用 MySQL数据库自带了一个很好用的备份命令&#xff0c;就是mysqldump&#xff0c;它的基本使用如下&#xff1b;语法&#xff1a;mysqldum…

隐藏文字的另一种方法

用图片作为背景&#xff0c;为了更好的用户体验的时候HTML结构上还是会写上相应的文字&#xff0c;此时会用text-indent:-9999px来隐藏文字。 前些天看到老外发现了另一个方法(ttp://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/)&#xff0c…

MySQL入门介绍

数据库介绍 1.1 什么是数据库&#xff1f; 简单的说&#xff0c;数据库&#xff08;英文Dtabase&#xff09;就是一个存放数据的仓库&#xff0c;这个仓库是按照一定的数据结果&#xff08;数据结构是指数据的组织形式或数据之间的联系&#xff09;来组织、存储的、我们可以通…

jQgrid的开发

http://www.trirand.com/jqgridwiki/doku.php?idwiki:jqgriddocs 转载于:https://www.cnblogs.com/Cliff-Zone-913/archive/2013/05/14/3078213.html

Mysqldump命令参数介绍

mysqldump命令参数 mysql   mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。转储包含创建表和/或装载表的SQL语句。   如果你在服务器上进行备份&#xff0c;并且表均为MyISAM表&#xff0c;应考虑使用my…

zoj 2526(一道很好的最短路应用题)

题目链接&#xff1a;http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId1538 题意&#xff1a;最短路问题&#xff0c;但是要求出最短路的条数&#xff0c;同时要求出所有可能的最短路选择中javabean最多的情况。 思路&#xff1a;求到终点的最短路径用Dijkstra&am…

MySQL常用命令大全

登录MySQL方法 单实例MySQL登录的方法 mysql #刚装完系统无密码情况登录方式&#xff0c;不需要密码 mysql -u root #刚装完系统无密码的情况登录 mysql -uroot -p #这里标准的dba命令行登录 mysql -uroot -poldboy #非脚本里一般不这样用&#xff0c;密码明文会泄露密码…

iOS 利用UIDocumentInteractionController打开和预览文档

iOS提供了使用其他app预览文件的支持&#xff0c;这就是Document Interaction Controller。此外&#xff0c;iOS也支持文件关联&#xff0c;允许其他程序调用你的app打开某种文件。而且&#xff0c;从4.2开始&#xff0c;Quick Look Framework提供了对多种文档的内置打印。你可…

服务器安全之iptables iptables

服务器安全之iptables 感谢老男孩老师为我们讲解iptables 优化之路 iptables防火墙简介 Netfilter/Iptables&#xff08;以下简称Iptables&#xff09;是unix/linux自带的一款优秀且开放源代码的安全自由的**基于包过滤的防火墙工具**&#xff0c;它的功能十分强大&#xff0…

MC新手入门(三十)------ 逻辑运算符和表达式

游戏设计中提供了三种逻辑运算符&#xff1a; 1&#xff09;&& 与运算 2&#xff09;|| 或运算 3&#xff09; &#xff01;非运算 游戏设计中我们常常要用到上面的逻辑运算&#xff0c;例如&#xff1a;当在双人游戏中都要实现两人同时存活才能过关&#xff0c;…