当前位置: 首页 > 知识库问答 >
问题:

如何设置输入领域的焦点?

叶书
2023-03-14
    null

任何帮助都将不胜感激。

共有1个答案

阙佐
2023-03-14
  1. 打开模式时,将焦点设置在此模式中的预定义上。

定义一个指令,让它$watch一个属性/触发器,这样它就知道什么时候聚焦元素:

Name: <input type="text" focus-me="shouldBeOpen">
app.directive('focusMe', ['$timeout', '$parse', function ($timeout, $parse) {
    return {
        //scope: true,   // optionally create a child scope
        link: function (scope, element, attrs) {
            var model = $parse(attrs.focusMe);
            scope.$watch(model, function (value) {
                console.log('value=', value);
                if (value === true) {
                    $timeout(function () {
                        element[0].focus();
                    });
                }
            });
            // to address @blesh's comment, set attribute value to 'false'
            // on blur event:
            element.bind('blur', function () {
                console.log('blur');
                scope.$apply(model.assign(scope, false));
            });
        }
    };
}]);

柱塞

<button class="btn" ng-click="showForm=true; focusInput=true">show form and
 focus input</button>
<div ng-show="showForm">
  <input type="text" ng-model="myInput" focus-me="focusInput"> {{ myInput }}
  <button class="btn" ng-click="showForm=false">hide form</button>
</div>
app.directive('focusMe', function($timeout) {
  return {
    link: function(scope, element, attrs) {
      scope.$watch(attrs.focusMe, function(value) {
        if(value === true) { 
          console.log('value=',value);
          //$timeout(function() {
            element[0].focus();
            scope[attrs.focusMe] = false;
          //});
        }
      });
    }
  };
});

1.的原始答案,使用隔离范围:

Name: <input type="text" focus-me="{{shouldBeOpen}}">
app.directive('focusMe', function($timeout) {
  return {
    scope: { trigger: '@focusMe' },
    link: function(scope, element) {
      scope.$watch('trigger', function(value) {
        if(value === "true") { 
          $timeout(function() {
            element[0].focus(); 
          });
        }
      });
    }
  };
});

柱塞。

2.的原始答案,使用隔离范围:

<button class="btn" ng-click="showForm=true; focusInput=true">show form and
 focus input</button>
<div ng-show="showForm">
  <input type="text" focus-me="focusInput">
  <button class="btn" ng-click="showForm=false">hide form</button>
</div>
app.directive('focusMe', function($timeout) {
  return {
    scope: { trigger: '=focusMe' },
    link: function(scope, element) {
      scope.$watch('trigger', function(value) {
        if(value === true) { 
          //console.log('trigger',value);
          //$timeout(function() {
            element[0].focus();
            scope.trigger = false;
          //});
        }
      });
    }
  };
});
 类似资料:
  • 问题内容: 呈现组件后,将焦点设置在特定文本字段上的反应是什么? 文档似乎建议使用引用,例如: 在渲染函数中的输入字段上进行设置,然后调用: 但是我应该在哪里称呼它?我已经尝试了几个地方,但无法正常工作。 问题答案: 您应该这样做,而不是。像这样

  • 问题内容: 有人知道如何进行以下工作: 如果用户在“名称”中单击-在DIV上将CSS类设置为XYZ? 版本:AngularJS v1.0.8 问题答案: 如果您使用的是Angular 1.2.x,请参阅和: 如果您使用的是1.0.x版本,则不会阻止您基于Angular 1.2.x 定义自己的指令和指令:

  • 当我输入时,它显示: 系统是centos7:如何解决该问题? 的内容。巴什尔 以及简介的内容 我还尝试安装postgresql,当我登录时,它显示如下。

  • 问题内容: 我让我的游戏在没有鼠标的情况下运行,因此不能使用指针。当玩家输球时将显示高分菜单。 这是我的代码 我努力了 但仍然没有专注于我的。 如何聚焦呢? 问题答案: 如果希望在GUI显示时集中精力,可以使用以下方法: 哪里会是你和你的。

  • 问题内容: 我将AngularJS与ng-repeat指令一起使用,以将对象数组显示为列表。 属性“ isNewest”仅在数组的一个元素上为true。我想将键盘焦点设置在该项目的文本输入上。如何使用AngularJS做到这一点? 问题答案: 这是另一个使用attrs。$ observe的指令实现: 请注意,插值的DOM属性值(即)始终计算为字符串,因此将原因与字符串而不是keyword进行比较。

  • 我在Eclise neon和Java 1.8中使用WindowsBuilder编写了一个基本的计算器类型程序。这几乎是完整的,一切都按我希望的方式进行。除了键盘输入。 作为最后一步,我想检测keyType事件并将它们映射到按钮按下,以便用户可以使用键盘进行输入,而不是用鼠标单击按钮。 我在程序类中添加了“实现KeyListener”... 我尝试将侦听器设置为一个名为keyb的不可见JTextFi