Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按Enter键将焦点移动到下一个控件_Javascript_Html_Angular_Typescript - Fatal编程技术网

Javascript 按Enter键将焦点移动到下一个控件

Javascript 按Enter键将焦点移动到下一个控件,javascript,html,angular,typescript,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) { i

我在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
    };
});
“严格使用”;
应用程序指令('SetTabCenter',函数(){
var includeTags=['INPUT','SELECT'];
功能链接(范围、元素、属性){
元素on('keydown',函数(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(可聚焦,e.target)
var nextIndex=currentIndex==focusable.length-1?0:currentIndex+1;
if(nextIndex>=0&&nextIndex
但这对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;
        }

    }

}

希望它能帮助你

听起来类似于请共享您的Angular2代码。为此,您在页面上创建单独的指令@tdavMy issue reload focus()无效。。如果表单上的输入被封装在单独的引导程序“表单行”或上面的“col-…”divs代码中,则自使用.nextElementSibling.any修复程序以来,该代码不起作用?@AkshayKhale您可以尝试此方法。页面上的我的问题重新加载焦点()不起作用。。它工作完美,正是我所需要的,非常感谢您将在IOS应用程序中工作(e.srcelelement.nextElementSibling.focus()),我使用过它,但在IOS应用程序中不工作,它在所有浏览器中工作,但在IOS应用程序中不工作。
import { Directive, ElementRef, HostListener, Input, Renderer } from '@angular/core';
@Directive({
    selector: '[onReturn]'
})
export class OnReturnDirective {    
    private el: ElementRef;   
    @Input() onReturn: string;
    constructor(private _el: ElementRef,public renderer: Renderer) {
        this.el = this._el;
    }  
    @HostListener('keydown', ['$event']) onKeyDown(e:any) {
        if ((e.which == 13 || e.keyCode == 13)) {
            e.preventDefault();
            let control:any;
            control = e.srcElement.nextElementSibling;
            while (true){                
                if (control) {
                  if ((!control.hidden) && 
                     (control.nodeName == 'INPUT' || 
                      control.nodeName == 'SELECT' || 
                      control.nodeName == 'BUTTON' || 
                      control.nodeName == 'TEXTAREA'))
                     {
                            control.focus();
                            return;
                        }else{
                            control = control.nextElementSibling;
                        }                         
                }
                else {
                    console.log('close keyboard');
                    return;
                }            
            }
        }
    } 
}