我在网站/移动应用上有一个搜索页面,其中包含一个字段。当我们进入页面时,必须在该字段上设置焦点,以便用户可以简单地开始键入。我已经创建了一个指令并将其链接到我的输入字段,但只有在我访问带有新缓存的页面时它才有效。当您使用移动设备访问该页面时,键盘会在第一时间出现,之后,您会看到它出现并立即关闭。看起来输入字段的焦点只有半秒钟。我已经尝试了几个问题的答案,但没有解决它。
指令:
====================
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();但它有完全相同的问题。
关于每次用户访问时如何强调对该领域的关注的任何想法?
提前致谢!
答案 0 :(得分:0)
如果需要关注输入,为什么需要focus-field='false'
。如果我是你,我只需删除$attr
和$watcher
。
link : function($scope,$element) {
$timeout(function() {
$element[0].focus();
}, 0);
};
然后去
<input focus-field type="search" />