keypress 和 blur 事件冲突的问题】的更多相关文章

需求:点击需求:点击添加标签,出来input框,内容输入完成后点击enter键和blur时都可以执行提交标签的效果,提交时对内容进行判断,执行完成后清除input内的内容.如下图 问题:内容输入完成后blur事件执行没有问题,但是keypress时会先执行keypress然后在执行blur,因前一个事件执行后input框情况,blur执行时会告知用户未输入内容,导致体验极差.解决:好吧,写到这里我发现我错了,因为始终都会执行blur函数,我直接只写一个blur事件就好了啊,啊啊啊,痛苦,想了那么…
最近做了一个查询小功能,input输入框输入文字后,自动列出几条查询结果,可以键盘上下键或鼠标进行查询结果选择,并且点击输入框其他地方要隐藏这个列出的结果. 但比较头疼的是input上添加blur事件和查询提示结果click事件发生冲突,点击查询结果时,会首先触发input的blur事件,导致将查询提示结果隐藏选择不了, 解决办法: 给blur失去焦点事件添加延迟事件,让blur事件在click事件后执行. $(".query_tools").blur(function(event){…
场景:例如做一个模仿百度搜索的搜索框,输入文字下面会有匹配项,当点击下拉项中的值时,就将值添加到搜索框中同时隐藏下拉框,点击其他地方就直接隐藏下拉框,这时所需要的事件分别为 下拉框事件onclick,输入框事件onblur,但是实际会出现想选中下拉框却先触发了onblur事件导致onclick无法执行.原因是因为JS是单线程,同一时间只能处理一个事件,且blur执行顺序优先click. 解决方案:将onclick改为onmousedown即可.…
一.问题描述文本框的blur事件和div元素的click事件出现冲突.在input的blur事件中,我们隐藏div元素.在div的click事件中,我们清除input的内容,并隐藏自身.当我们在input中输入内容后,点击div,希望触发div的click事件,清除input的内容,并隐藏自身.不料先触发了input的blur事件,隐藏了div元素,导致无法完成div的click事件.二.问题分析出现上述问题,让人不得不去探索事件执行顺序.1.在一个input文本框中绑定如下事件,测试执行顺序…
当写个下拉选择框时我们希望当input失去焦点时,下拉框消失,或者当选择下拉框中的内容的同时将内容填入input并且使下拉框消失. 这时候我们会想到blur和click,单独使用的时候是没有问题的,但一旦放到一起就会发现你点击了下拉选项中的li时,直接触发了blur事件,而且对li的click事件之后的判断是否是点击li还是仅仅input失去焦点这个判断执行失败了 例如 $('#productName').blur(function(){ var chooseProduct = 0; $('.p…
方法一 使用setTimeout $(function(){ $(".cy-name-input input").on({ focus:function() { $(".cy-close").css('display','block'); }, blur:function() { setTimeout(function(){ $(".cy-close").css('display','none'); },0) } }) $(".cy-c…
这段时间写了很多基于js和jquery的前端控件,每一个的功能都很复杂,事件也很多. 因为都是单独封装的,单独使用没有问题,但把他们放到一个页面使用,就经常发生事件冲突的问题. 这几天一直在考虑用一个什么比较好的方法解决,今天把其中一个解决方案实验了一下,感觉很不错,现在发出来,大家一起探讨下. window.UE_EVENT = window.UE_EVENT || { Key: 1, ClipBoard: null, CurrElement: null, CurrKey: 0, Events…
最近在做个混合app , 用html做页面,然后通过webview嵌套在activity中,效果是这样: 开始还是比较顺利,增加了菜单退出按钮,返回键页面回退功能,页面加载显示加载图标(在app端实现,本来是为了增强用户体验,在页面加载的时候可以显示一个转动的图标,但是到了最后,这个功能反而成了影响用户体验的鸡肋, 因为页面中有很多图片, 每次页面显示出来后,图片还没加载完毕,所以加载图标一直在那里转动,影响了用户浏览页面,最后将此功能删除了). 以上基本具备了混合app的雏形,可以拿出来忽悠一…
最近发现网页程序中有个BUG,就是在input标签输入框中输入完数据后,直接点击“取消” 按钮的时候.出现网页崩死的情况: 经过小主酸菜我,各种方法的尝试后,找到一个初步可以解决的方案,在这里分享给大家: 首先,分析一下原因:input标签直接离开后,触发的事件是input标签的blur事件:然后直接去点击了取消按钮,执行button事件. 由于js是单线程的所以就出现了问题,现在需要让blur先执行验证,然后在触发click事件. 所以:咱们的解决方案就是,要让他blur事件先验证了,然后再执…
事件触发时间 focus:当focusable元素获得焦点时,不支持冒泡:focusin:和focus一样,只是此事件支持冒泡:blur:当focusable元素失去焦点时,不支持冒泡:focusout:和blur一样,只是此事件支持冒泡: 以前一直以为所有事件都是支持冒泡的,都是可以cancel的,查阅了[MDN上相关资料](https://developer.mozilla.org/en-US/docs/Web/Events)后,才发现有些事件支持冒泡,有些事件并不支持冒泡:有些事件有默认行…