javascript - 将焦点移至 Enter 键上的下一个控件

标签 javascript html angular typescript

我在 Angular 1.x 上找到了一些项目,用户可以通过按 Enter 键将焦点移动到下一个控件。

'use strict';
app.directive('setTabEnter', function () {

    var includeTags = ['INPUT', 'SELECT'];

    function link(scope, element, attrs) {
        element.on('keydown', function (e) {
            if (e.keyCode == 13 && includeTags.indexOf(e.target.tagName) != -1) {
                var focusable = element[0].querySelectorAll('input,select,button,textarea');
                var currentIndex = Array.prototype.indexOf.call(focusable, e.target)
                var nextIndex = currentIndex == focusable.length - 1 ? 0 : currentIndex + 1;

                if (nextIndex >= 0 && nextIndex < focusable.length)
                    focusable[nextIndex].focus();

                return false;
            }
        });
    }

    return {
        restrict: 'A',
        link: link
    };
});

但这不适用于 Angular 2。如何在 Angular 2 中将焦点设置在 Enter 按键的下一个控件上?

最佳答案

import { Directive, ElementRef, HostListener, Input } from'@angular/core';
@Directive({
    selector: '[onReturn]'
})
export class OnReturnDirective {
    private el: ElementRef;
    @Input() onReturn: string;
    constructor(private _el: ElementRef) {
        this.el = this._el;
    }
    @HostListener('keydown', ['$event']) onKeyDown(e) {
        if ((e.which == 13 || e.keyCode == 13)) {
            e.preventDefault();
            if (e.srcElement.nextElementSibling) {
                e.srcElement.nextElementSibling.focus();
            }
            else{
                console.log('close keyboard');
            }
            return;
        }

    }

}

希望对您有所帮助!

关于javascript - 将焦点移至 Enter 键上的下一个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41283650/

相关文章:

c# - 如何防止在不同域中加载脚本

javascript - 方向更改后视口(viewport)比例不起作用

javascript - 如何在表格单元格(td)上使用 Bootstrap 的下拉菜单?

php - 不想使用 strip_tags() 删除 CDATA

javascript - 选择选择选项后移动自动对焦

javascript - 我网站上不必要的幻灯片动画滚动条

javascript - 使用javascript从数组中获取值并写入html文件

html - Angular - 按钮不增加变量

javascript - onclick 在表中添加新行

AngularFire2 - .valueChanges() 不返回我的数据