【问题标题】:How to make keypress select in drop down using Angular Js?如何使用Angular Js在下拉菜单中进行按键选择?
【发布时间】:2017-01-06 08:36:29
【问题描述】:

我有一个下拉菜单,其中项目大小很大,因此我正在寻找一种启用键盘输入(按键)的方法,以便我可以键入并自动移动到下拉菜单中的该选项。有什么建议吗?

<ul uib-dropdown-menu role="menu" style="max-height: 150px; overflow-y: auto; max-width : 10px">
  <li ng-repeat="value in feature.values | unknownValueFilter | featureValueOrder ">
    <a ng-click="currentValue.set(value)" href="">
      {{value | featureValueFormatter }}
    </a>
  </li>
</ul>

【问题讨论】:

标签: javascript angularjs drop-down-menu angularjs-ng-repeat angular-ui-bootstrap


【解决方案1】:

例如,您可以尝试在&lt;li&gt; 上使用filter 和在&lt;ul&gt; 上的ng-keyup

<ul uib-dropdown-menu role="menu" style="max-height: 150px; overflow-y: auto; max-width : 10px" ng-keyup="onKeyUp($event)">
  <li ng-repeat="value in feature.values | filter: tappedKeys | unknownValueFilter | featureValueOrder ">
    <a ng-click="currentValue.set(value)" href="">
      {{value | featureValueFormatter }}
    </a>
  </li>
</ul>

并添加您的控制器:

$scope.tappedKeys = '';

$scope.onKeyUp = (e)=>{
  $scope.tappedKeys += e.key;
};

但是您应该考虑如何清除键入的值。

但是无论如何,我建议您以某种方式减少列表或创建可见过滤器(可能是文本输入)。否则用户将几乎无法理解这种行为。

【讨论】:

  • @GPost :我尝试过你提到的但没有看到它发生。
  • @GPost : plnkr.co/edit/9rpuHzlZ1gSMd3fHHxHP?p=preview 但仍然无法正常工作
  • 您必须在&lt;li&gt; 节点上使用ng-repeat 并在其上使用filter 才能看到一些效果
  • 想通了。谢谢:) 但是一旦我选择当我尝试再次选择时,选项就会重新设置。你能建议我一个清理的方法吗?我是角度的新手。如果你让我知道我应该用什么来清除按下的键,将不胜感激
  • @user3407267,我的建议是寻找另一种方式:) 最好让用户看到过滤器。否则,您可以尝试在onKeyUp() 回调中使用$timeout(),在其中您将早期定义的变量设置为真clearFlag = true。然后每次进入onKeyUp() 时检查标志:if (clearFlag === true) {$scope.tappedKeys = ''}。自己弄清楚别人的步骤=)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 2015-06-06
  • 2015-06-01
  • 2018-05-26
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
相关资源
最近更新 更多