javascript - Angularjs:选择并聚焦指令链接中的元素

标签 javascript angularjs

我正在尝试使用自定义指令从一开始就选择并聚焦文本输入字段。

输入字段:

<input type="text" value="Preset Value" select-on-load />

自定义指令:

app.directive('selectOnLoad', function () {
// Linker function
return {
    restrict: 'A',
    link: function (scope, element, attrs) {
        element.focus().select();
    }
};

});

但我只收到一个 javscript 错误,指出 focus/select 不是一个函数。 我还应该怎么做?

最佳答案

Angular 的 jqLit​​e(内置轻量级 jQuery 版本)不支持 .focus()

您需要获取实际的 DOM 元素并使用 Javascript 的内置 .focus()

element[0].focus()

(element[0] 从 jqLit​​e 包装器 element 获取 DOM 元素对象)

使用 .select() 时,如果您尝试选择通过 ng-model 提供的文本,会有点棘手,因为到了 link 函数运行时,ng-model 的值尚未被插值并插入到 DOM 中。

您需要等到摘要周期结束,我见过的常见方法是通过$timeout:

$timeout(function(){
  element[0].select();
});

关于javascript - Angularjs:选择并聚焦指令链接中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28195438/

相关文章:

javascript - 预期的响应包含一个对象但得到一个数组

javascript - AngularJS Jasmine isolateScope() 返回未定义

javascript - 找不到jquery,找不到ajax

javascript - HighCharts 饼图,50 多个标签,未显示全部

javascript - AngularJS 通过内联表达式过滤

javascript - AngularJs + ui.bootstrap.Modal 无法正常工作?

html - 我们如何删除 Angular js中的方括号[]和双引号 ""?

javascript - react-redux 中的几个同名 Action

javascript - 如何刷新事件处理程序内的 ODataModel

javascript - 文本区域旁边异常显示的行号