Angular 1.x专注于输入字段只能工作一次

时间:2017-10-20 13:50:30

标签: javascript jquery html angularjs

我在网站/移动应用上有一个搜索页面,其中包含一个字段。当我们进入页面时,必须在该字段上设置焦点,以便用户可以简单地开始键入。我已经创建了一个指令并将其链接到我的输入字段,但只有在我访问带有新缓存的页面时它才有效。当您使用移动设备访问该页面时,键盘会在第一时间出现,之后,您会看到它出现并立即关闭。看起来输入字段的焦点只有半秒钟。我已经尝试了几个问题的答案,但没有解决它。

指令:

====================
Ex A
====================
A
B
~~~ GetEnumerable Start
>>> yield return : 3
>>> yield return : 2
>>> yield return : 1
~~~ GetEnumerable End
*** foreach : 1
~~~ GetEnumerable Start
>>> yield return : 3
*** foreach : 2
~~~ GetEnumerable Start
>>> yield return : 3
*** foreach : 3
~~~ GetEnumerable Start
>>> yield return : 3
=== Matched .First() : 3
C

====================
Ex B
====================

A
B
~~~ GetEnumerable Start
>>> yield return : 3
>>> yield return : 2
>>> yield return : 1
~~~ GetEnumerable End
*** foreach : 1
~~~ GetEnumerable Start
>>> yield return : 3
>>> yield return : 2
>>> yield return : 1
~~~ GetEnumerable End
=== Matched .First() : 1
*** foreach : 2
~~~ GetEnumerable Start
>>> yield return : 3
>>> yield return : 2
>>> yield return : 1
~~~ GetEnumerable End
*** foreach : 3
~~~ GetEnumerable Start
>>> yield return : 3
>>> yield return : 2
>>> yield return : 1
~~~ GetEnumerable End
C

====================
Ex C
====================

A
B
~~~ GetEnumerable Start
>>> yield return : 3
>>> yield return : 2
>>> yield return : 1
~~~ GetEnumerable End
*** foreach : 1
=== Matched .First() : 1
*** foreach : 2
*** foreach : 3
C

HTML:

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();
        });
    });
  }
}});

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

关于每次用户访问时如何强调对该领域的关注的任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

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

然后去

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