我在弹出窗体上有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();
}
});