javascript - 阻止 split 失去焦点

标签 javascript jquery html css

我有一个自动完成功能附加到带有 id 关键字的输入标签。自动完成的结果在带有 id results 的分区中可见,并且在带有 class item 的分区中的每个结果项中可见。 这是 HTML 标记:

<input name='institute' type="text" placeholder="Start typing.."id="keyword">
<div id="results">
    <div class="item"><p>Item 1</p></div>
    <div class="item"><p>Item 2</p></div>
    <div class="item"><p>Item 3</p></div>
</div>

除法结果有一个固定的高度。这是 CSS:

width:80%;
height: 200px;
overflow-y: auto;

这是与我的问题相关的 jquery 部分

$("#keyword").blur(function() {
    $("#results").fadeOut(500);
  })
  .focus(function() {
    $("#results").show();
  });

现在,只要结果的高度超过 200px,就会出现问题。我得到一个滚动条,但每当我点击滚动条时,输入标签关键字就会失去焦点,除法结果就会消失。我想在使用滚动条时保留除法结果,仅在选择一个元素后才将其淡化。我该如何解决?

最佳答案

有趣的问题,也是在 Chrome IE 中工作的真正挑战:

var canBlur= true;

$('#results')
  .mousedown(function(event) {
    canBlur= event.target.id !== 'results';
  })

$(document)
  .mousemove(function() {
    if(!canBlur) {
      $('#keyword').focus();
    }
    canBlur= true;
  });

$('#keyword')
  .blur(function(event) {
    if(canBlur) {
      $('#results').fadeOut(500);
    }
  })
  .focus(function() {
    $('#results').fadeIn(0);
  })

Fiddle

关于javascript - 阻止 split 失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765358/

相关文章:

javascript - 我想根据下拉列表的值更改输入字段的值。但两者应该有不同的值(value)观

javascript - 尽管使用 extraData,但删除最后一项后无法重新渲染 FlatList - React Native

javascript - 以精确数量获取项目的算法

javascript - 从具有相同项目的其他下拉列表中删除下拉列表中的选定项目

javascript - 更改一个选择选项会更改许多其他选项(JavaScript、JQuery)

javascript - 知道您是通过应用程序还是通过网站运行

javascript - 使用对象属性值组合包含对象的多个数组

javascript优化多个reduce和map从嵌套对象中提取数据

javascript - 提交前检查 Javascript 中的多个函数是否为真

html - 可滚动的多级水平菜单