2017-10-20 63 views
1

我有一个网站/移动应用程序有一个领域的搜索页面。当我们进入页面时,必须在该字段上设置焦点,以便用户可以简单地开始输入。我创建了一个指令并将其链接到我的输入字段,但只有当我访问带有新缓存的页面时,它才有效。当您使用移动设备访问该页面时,键盘会首次出现,之后,您会看到它立即停止并立即停止。看起来输入栏只有半秒钟的重点。我已经尝试了几个这个问题的答案,但没有解决它。Angular 1.x专注于输入字段只能工作一次

指令:

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' /> 

我也试图通过使用$( '#搜索字段')将焦点设置在控制重点();但它有完全相同的问题。

有关我每次用户访问时如何强制关注该字段的任何想法?

在此先感谢!

回答

0

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

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

,然后去

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

我真的很感激你迅速的答案,但遗憾的是,出现了同样的问题:现场获得焦点只在第一次 – evanbrosky