angular.js - angularjs 显示textarea后如何自动获取焦点

查看:371
本文介绍了angular.js - angularjs 显示textarea后如何自动获取焦点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<div ng-repeat="x in inputContent track by $index">
    <div ng-if="x.hint" ng-click="toEdit({{$index}})" class="lc-hint">{{x.placeholder}}</div>
    <textarea ng-if="!x.readable" ng-model="x.value"></textarea>
</div>

由ng-repeat生成了多个这样的结构,textarea一开始隐藏,点击lc-hint,使textarea出现,如何自动获取焦点。

官方文档里的setfocus指令好像不行。求助

解决方案

你的代码有点问题:

ng-click="toEdit({{$index}})"

应该写成

ng-click="toEdit($index)"

为什么不用原生的,加入 textarea 的 id 为abc;

document.getElementById("abc").focus();

如果在console中输入,最好加个延时。当前页面为focus状态,才能触发textarea的focus。输入完后立即点击页面的任何地方才会触发:

setTimeout(function(){document.getElementById("abc").focus();},1000);

你遇到的 setfocus 不生效,可能也是 因为当前页面不是focus状态。

放到你的代码环境里,将textarea加上id,我给写的前缀为 suibianla_{随便啦}:

<textarea id="suibianla_{{ $index }}" ng-if="!x.readable" ng-model="x.value"></textarea>

$scope.toEdit = function(index){
    //你的业务代码
    inputContent[index].readable = true;    //我猜你是这样写的,在这里后边加一句
    document.getElementById("suibianla_" + index).focus();
}

这篇关于angular.js - angularjs 显示textarea后如何自动获取焦点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆