【问题标题】:seting focus angucomplete-alt设置焦点angucomplete-alt
【发布时间】:2016-07-04 22:25:13
【问题描述】:

我正在使用指令angucomplete-alt 并且在页面加载后立即将焦点设置在输入上,但我不知道该怎么做,我找到的解决方案似乎非常hacky。

示例代码:

<angucomplete-alt id="ex2"
              placeholder="Search people"
              pause="300"
              selected-object="selectedPerson"
              local-data="people"
              local-search="localSearch"
              title-field="firstName,surname"
              description-field="twitter"
              image-field="pic"
              minlength="1"
              input-class="form-control form-control-small"
              match-class="highlight" />

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    好吧,我不知道这个指令,但如果没有一些 hacky,您似乎无法将焦点设置在输入上。我在他们的 github 上进行了一些搜索,我在那里找到了相同的 issue,并且有一个可能的解决方案可以解决您的问题。

    这是一个 sn-p 工作:

    var app = angular.module('app', ['angucomplete-alt']);
    
    app.controller('mainCtrl', function($scope, $timeout) {
       $timeout(function() {
         var searchInput = document.getElementById('ex2_value');
         searchInput.focus();
       }, 0);
    });
    <!DOCTYPE html>
    <html ng-app="app">
    
    <head>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/angucomplete-alt/2.4.1/angucomplete-alt.min.js"></script>
    </head>
    
    <body ng-controller="mainCtrl">
      <angucomplete-alt id="ex2"
              placeholder="Search people"
              pause="300"
              selected-object="selectedPerson"
              local-data="people"
              local-search="localSearch"
              title-field="firstName,surname"
              description-field="twitter"
              image-field="pic"
              minlength="1"
              input-class="form-control form-control-small"
              match-class="highlight" />
    </body>
    
    </html>

    希望对你有帮助。

    【讨论】:

    • 最后一个问题,我尝试应用 2 个输入,只应用第一个焦点,有什么原因吗?例如: $timeout(function() { var searchInputFirst = document.getElementById('first_value'); var searchInputSecond = document.getElementById('second_value'); searchInputFirst.focus(); searchInputSecond.focus(); }, 0);
    • 第一。问题: $timeout 只是一个设置延迟做某事的服务,您可以在文档中获得更多解释:docs.angularjs.org/api/ng/service/$timeout。另一方面,在这里它是无用的,除非你想稍微延迟设置焦点。 第二。问题:您一次只能将焦点设置在一个元素上。
    猜你喜欢
    • 2016-09-13
    • 2015-03-07
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多