jQuery失去焦点事件
我试图显示一个容器,如果input字段获得焦点,并且 – 这是实际的问题 – 隐藏容器,如果焦点丢失。 jQuery的焦点有相反的事件吗?
一些示例代码:
<input type="text" value="" name="filter" id="filter"/> <div id="options">some cool options</div> <script type="text/javascript"> $('#options').hide(); $('#filter').focus(function() { $('#options').appear(); }); </script>
而我想要做的是这样的事情:
$('#filter').focus_lost(function() { $('#options').hide(); });
当元素失去焦点时使用blur事件来调用你的函数:
$('#filter').blur(function() { $('#options').hide(); });
喜欢这个:
$(selector).focusout(function () { //Your Code });
使用“模糊”: http : //docs.jquery.com/Events/blur#fn
模糊事件:当元素失去焦点时。
聚焦事件:当元素或其内部的任何元素失去焦点时。
由于过滤元件内部没有任何东西,在这种情况下,模糊和聚焦将起作用。
$(function() { $('#filter').blur(function() { $('#options').hide(); }); })
jsfiddle模糊: http : //jsfiddle.net/yznhb8pc/
$(function() { $('#filter').focusout(function() { $('#options').hide(); }); })
jsfiddle专注: http : //jsfiddle.net/yznhb8pc/1/
如果在关注字段之前将“酷选项”从视图中隐藏起来,那么您将希望在JQuery中创build此选项,而不是在DOM中创build此选项,以便任何使用屏幕阅读器的用户都不会看到不必要的信息。 为什么他们不得不听呢?
所以你可以像这样设置variables:
var $coolOptions= $("<div id='options'></div>").text("Some cool options");
然后附加(或预先)在焦点上
$("input[name='input_name']").focus(function() { $(this).append($coolOptions); });
然后在焦点结束时移除
$("input[name='input_name']").focusout(function() { $('#options').remove(); });