event.stopPropagation一旦jQuery自动完成就可以工作

时间:2014-07-20 13:51:52

标签: jquery ruby-on-rails autocomplete

我在弹出窗体上有jQuery自动完成小部件。 body元素上的事件处理程序,如果您在弹出窗体外单击,则关闭弹出窗口,但如果在弹出窗口中,则使用event.stopPropagation,以便窗体不会关闭。如果您在自动完成下拉列表中单击某个项目,则弹出窗口正在关闭,因此我将event.stopPropagation添加到select:自动完成内部。这有效,但只有一次。如果再次使用下拉列表,并单击一个值,弹出窗口将关闭。

我重命名了一些变量,所以为任何不一致的事情道歉,你应该得到要点。

从某些浏览器调试来看,看起来第一次没有触发select函数,所以就像stopPropagation杀了它一样。

body元素事件处理程序:

$("body").on("click", function(e){
    clearPopupNew();
    unloadPopupNew();
});

popup div事件处理程序,以防止上面的处理程序运行:

// the popup form
$("#popup_b").on("click", function(e){
   e.stopPropagation();
});

自动填充代码:

$("#status").autocomplete({
    minLength: 1,        
    source: function( request, response ) {

        $.getJSON("/ajax/getstatus.json", request, function( data, status, xhr) {
            response(data);
        });
    },
    select: function(event, ui) {
        event.stopPropagation();
    }     
}); 

0 个答案:

没有答案