当前位置: 首页 > 知识库问答 >
问题:

jQuery:fire click()在blur()事件之前

卫学真
2023-03-14

我有一个输入字段,在那里我试图提出自动完成建议。代码看起来像

<input type="text" id="myinput">
<div id="myresults"></div>

在输入的blur()事件中,我想隐藏结果的div:

$("#myinput").live('blur',function(){
     $("#myresults").hide();
});

当我写一些东西到我的输入我发送请求到服务器并得到json响应,解析成ul-

当我点击这个解析的li元素时,我想将值从li设置为input并隐藏#myresultsdiv

$("#myresults ul li").live('click',function(){
     $("#myinput").val($(this).html());
     $("#myresults").hide();
});

一切都很好,但是当我单击我的liblur()事件在单击()之前触发,并且输入的值不会得到li的html。

如何在blur()之前设置click()事件?

共有3个答案

甘祺
2023-03-14

我遇到了这个问题,使用mousedown对我来说不是一个选择。

我通过在处理函数中使用setTimeout解决了这个问题

        elem1.on('blur',function(e) {

            var obj = $(this);

            // Delay to allow click to execute
            setTimeout(function () {
                if (e.type == 'blur') {

                  // Do stuff here

                }
            }, 250);
        });

        elem2.click( function() {
            console.log('Clicked');
        });
闾丘鸣
2023-03-14
$(document).on('blur', "#myinput", hideResult);

$(document).on('mousedown', "#myresults ul li", function(){
     $(document).off('blur', "#myinput", hideResult); //unbind the handler before updating value
     $("#myinput").val($(this).html()).blur(); //make sure it does not have focus anymore
     hideResult(); 
     $(document).on('blur', "#myinput", hideResult);  //rebind the handler if needed
});

function hideResult() {
     $("#myresults").hide();
}

不停摆弄

邹玮
2023-03-14

mousedown而不是单击

按下鼠标按钮时,mousedownblur事件会一个接一个地发生,但单击仅在松开鼠标按钮时才会发生。

您可以在mousedownpreventDefault()阻止下拉菜单窃取焦点。稍有优势的是,释放鼠标按钮时将选择该值,这就是原生选择组件的工作方式。JSFIDLE

js prettyprint-override">$('input').on('focus', function() {
    $('ul').show();
}).on('blur', function() {
    $('ul').hide();
});

$('ul').on('mousedown', function(event) {
    event.preventDefault();
}).on('click', 'li', function() {
    $('input').val(this.textContent).blur();
});

 类似资料:
  • 问题内容: 当输入框处于焦点状态时,不会调用该函数。 我包含在文件中,它是在 jQuery是v1.10.2版和Angular.js是v1.0.7版之前。 可能会发生什么? 问题答案: ngFocus在Angular 1.0.7上不可用。在Angular 1.2上可用。 您可以创建自己的ngFocus指令,这非常简单,请在此处查看: https://gist.github.com/eliotsyke

  • 如图:el-select使用文档提供的focus事件和blur事件,当focus的时候执行blur,使其失去焦点收起下拉面板。但是执行了blur事件后,触发了2次focus,想问问原因,如何解决 业务需求是:点击下拉框的时候,根据条件判断是否要展开下拉面板,不用el-select的disabled禁止,所以用以上方式实现,但是有触发2个的问题

  • 本文向大家介绍Javascript中click与blur事件的顺序详析,包括了Javascript中click与blur事件的顺序详析的使用技巧和注意事项,需要的朋友参考一下 一、现象 最近在开发中碰到了一个需求,具体需求如下图。 这是一个很常见的需求,input框负责在点击回车和失焦的时候确认输入。button负责清除输入,input绑定代码为: "X"绑定的代码为: 尝试着执行代码,并按照先输

  • 在jQuery中,我看到blur()链接到focus(),如下所示: 为什么focus事件被激发后blur()不立即执行?当blur()链接到focus()时,它直到字段失去焦点之后才执行,因为它是链接的,我认为它会在focus事件被激发之后立即激发,即使输入字段还没有失去焦点。

  • 本文向大家介绍jQuery事件blur()方法的使用实例讲解,包括了jQuery事件blur()方法的使用实例讲解的使用技巧和注意事项,需要的朋友参考一下 实例 当输入域失去焦点 (blur) 时改变其颜色: 定义和用法 当元素失去焦点时发生 blur 事件。 blur()函数触发 blur 事件,或者如果设置了 function 参数,该函数也可规定当发生 blur 事件时执行的代码。 提示:早

  • 事件 事件:用户与浏览器之间特定的交互瞬间。 事件类型 web浏览器发生的事件有很多类型,不同的类型有着不同的信息。"DOM3级事件"包含有:UI事件、焦点事件、滚轮事件、文本事件、鼠标事件、键盘事件、合成事件、变动事件、变动名称事件等。 UI事件 UI事件指的是那些 不一定与用户操作有关 的事件。DOM规范中留下向后兼容。UI事件包含: load:当页面加载后在window上面触发,当所有框架加