gpt4 book ai didi

angular - Enter 按键的行为类似于 Angular 中的 Tab

转载 作者:行者123 更新时间:2023-12-05 01:40:53 25 4
gpt4 key购买 nike

我有一个 Angular 2+ 表单组,每个表单字段都有 tabIndex。

如何在每次按下 Enter 键时将焦点更改到下一个表单字段(类似于按 Tab)?

JavaScript 引用 - Enter key press behaves like a Tab in Javascript

最佳答案

我会用一个简单的指令和一个更简单的服务来做到这一点。

tab.directive.ts

import { Directive, Input, ElementRef, HostListener, OnInit } from '@angular/core';
import { TabService } from './tab.service';
type IKNOWISNUMBER = any;
type IKNOWISSTRING = any;

@Directive({
selector: '[tabIndex]'
})
export class TabDirective implements OnInit {

private _index: number;
get index(): IKNOWISNUMBER{
return this._index;
}
@Input('tabIndex')
set index(i: IKNOWISSTRING){
this._index = parseInt(i);
}

@HostListener('keydown', ['$event'])
onInput(e: any) {
if (e.which === 13) {
this.tabService.selectedInput.next(this.index + 1)
e.preventDefault();
}
}
constructor(private el: ElementRef, private tabService: TabService) {
}

ngOnInit(){
this.tabService.selectedInput.subscribe((i) => {
if (i === this.index){
this.el.nativeElement.focus();
}
});
}
}

tab.service.ts

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';

@Injectable()
export class TabService {
selectedInput: BehaviorSubject<number> = new BehaviorSubject<number>(1);
}

我创造了一点 stackblitz展示它是如何工作的。

附言请记住为每个组件内的 tab.service 提供一个表单,因为您需要为每个表单提供一个特定的实例。

关于angular - Enter 按键的行为类似于 Angular 中的 Tab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55595559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com