【问题标题】:Angular 1.x focus on input field works only onceAngular 1.x 专注于输入字段只工作一次
【发布时间】:2017-10-20 22:42:33
【问题描述】:

我在具有字段的网络/移动应用程序上有一个搜索页面。当我们进入页面时,必须在该字段上设置焦点,以便用户可以简单地开始输入。我创建了一个指令并将其链接到我的输入字段,但它仅在我访问带有新缓存的页面时才有效。当您使用移动设备访问该页面时,键盘第一次出现,然后您会看到它出现并立即下降。似乎输入字段的焦点只有半秒钟。对于这个问题,我尝试了几个答案,但都没有解决它。

指令:

app.directive('focusField',function($timeout) {
return {
  link : function($scope,$element,$attr) {
    $scope.$watch($attr.focusField,function(val) {
        $timeout(function() {
            val ? $element[0].focus() :
                $element[0].blur();
        });
    });
  }
}});

HTML:

<input id="search-field" class="form-control" ng-model="searchText" placeholder="Search interviews..." focus-field='true' />

我还尝试使用 $('#search-field').focus(); 在控制器中设置焦点但它有完全相同的问题。

关于如何在每次用户访问时强制将焦点集中在该字段上的任何想法?

提前致谢!

【问题讨论】:

    标签: javascript jquery html angularjs


    【解决方案1】:

    如果输入需要集中,为什么需要focus-field='false'。如果我是你,我会简单地删除 $attr$watcher

    link : function($scope,$element) {
        $timeout(function() {
            $element[0].focus();
        }, 0);
    };
    

    那就去吧

    <input focus-field type="search" />
    

    【讨论】:

    • 非常感谢您的快速回答,但不幸的是,同样的问题发生了:该字段仅在第一次获得焦点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 2017-10-13
    • 2011-06-06
    相关资源
    最近更新 更多