其实聚焦本质上还是调用js的原生方法 focus() ,也就是说如果你想要某个DOM节点聚焦,只需要它调用这个方法就可以
当弹窗打开时,自动聚焦到 input 输入框。
看似很简单,但是有两个容易出问题的地方:
一、聚焦的时机
当弹窗的开关变量为true时,你让相应的元素聚焦,但此时可能弹窗并没有渲染完成
二、聚焦的元素
当你使用第三方组件的 Input 输入框时,你为这个输入框标记了 ref ,但是获取到的是这个组件,而并不是组件中的 input
而你使用原生的 input 元素则不会有这个问题
iView弹窗和输入框
网站导航
我刚才测试了,除了刚进页面的时候聚焦光标是不在文字后面的其他的都在。我写了这样的代码,转换一下,获取下值,然后再赋值,光标自然就到文字后面了<input type="text" value="一个">
<button>点击</button>
<script type="text/javascript">
$("button").click(function () {
var v = $("input").val()
$("input").focus().val(v)
})
</script>
聚焦的话是ng-focus指令。
语法如下:
<element ng-focus="expression"></element>
element是元素的代指,他可以是:<a>, <input>, <select>, <textarea>, 和 window。
举个栗子:
<input ng-focus="count = count + 1" ng-init="count=0" />
<h1>{{count}}</h1>
ng-focus的定义是:
ng-focus 指令用于告诉 AngularJS 在 HTML 元素获取焦点时需要执行的操作。
ng-focus 指令不会覆盖元素的原始 onfocus 事件, 事件触发时,ng-focus 表达式与原始的 onfocus 事件将都会执行。
参考资料:菜鸟教程(强烈推荐这个网站,hin好用啊)