jquery - 创建下拉组合框的问题

标签 jquery css

我正在尝试制作一个下拉组合框(这次不想尝试使用 JQuery 插件)。

这是我的 HTML:

<div style="display: table-cell; width:150px; z-index:-1;" id="supdiv">
        <input size='10' id='supinput'>
            <div id='supsel' style='position:absolute;z-index:0;background-color:#b0c4de;'>
            <input type ='checkbox' value='0' id = 'supplier[]' name='supplier'>A</br>
            <input type ='checkbox' value='1' id = 'supplier[]' name='supplier'>A</br>
            <input type ='checkbox' value='2' id = 'supplier[]' name='supplier'>A</br>
            <input type ='checkbox' value='3' id = 'supplier[]' name='supplier'>A</br>

            <input type='button' value='OK' id='supclose'>
            </div>
</div>

当页面加载时,我隐藏了 supsel div。

$('#supsel').hide();

当焦点来到 supinput 时,我会显示 div。此外,我在单击“确定”按钮时隐藏了 div。

$('#supinput').focus(function(){
            $('#supsel').show()
    }); 
 $('#supclose').click(function(){
            $('#supsel').hide()
    });

现在我的问题是,如果用户单击页面上的其他任何地方或焦点移动到任何其他输入或区域,我想隐藏 div,但我希望 div 一直显示直到用户选择复选框或焦点在 SUPSEL 上。我怎么做?

最佳答案

jsBin demo

</br>应该是<br />
<input>应该是 <input />

不仅仅是添加:

$('#supdiv').on('click',function(e){
    e.stopPropagation(); // prevent clicks on your parent div to propagate to doc.
});
$(document).on('click focusout',function(event){   // register clicks focusouts
  if(event.target.id !== 'supdiv'){  // if click was not on your parent bropbox
    $('#supsel').hide();             // than do something about it! ;)
  }  
});

关于jquery - 创建下拉组合框的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344618/

相关文章:

javascript - 有什么方法可以阻止默认事件然后用 jQuery 再次触发它吗?

javascript - 用 Flot 识别悬停点?

javascript - 如何在主窗口中加载 URL 内容

javascript - 带有功能性关闭按钮的弹出窗口(HTML、CSS、JavaScript)

css - Firefox 计算 block 更大?

javascript - HammerJS 在拖动后触发点击

javascript - Magento:是否有一些 js 函数可以使 UL 列表的高度相等?

html - 如何解决 Google Maps div map_canvas 在 Firefox 中向右移动的问题?

javascript - 如何禁用浏览器的加载圈(靠近图标)

jquery - 根据内容更改 <p> 类,通过单击不同的表格单元格添加