Javascript Angular应用程序:用于反应表单字段之间的虚拟键盘的制表键功能
我正在寻找更好的方法或建议,以实现标签键在我的应用程序中的虚拟键盘。 我在angular form field click get current input click事件中实现了类似的功能,并在Tab键上迭代当前表单中的所有输入字段,获得下一个输入字段 基本上使用Javascript Angular应用程序:用于反应表单字段之间的虚拟键盘的制表键功能,javascript,html,angular,virtual-keyboard,Javascript,Html,Angular,Virtual Keyboard,我正在寻找更好的方法或建议,以实现标签键在我的应用程序中的虚拟键盘。 我在angular form field click get current input click事件中实现了类似的功能,并在Tab键上迭代当前表单中的所有输入字段,获得下一个输入字段 基本上使用dispatchEvent和event.target 关于tabKeyPress调用方法: TabKeyEventInTabletMode(event, currentdata) { var excludeFields: a
dispatchEvent
和event.target
关于tabKeyPress调用方法:
TabKeyEventInTabletMode(event, currentdata) {
var excludeFields: any = ["checkbox", "button", "toggle"];
if (this.EventData && this.EventData.target && this.EventData.target.id) {
if (this.EventData.target.form && this.EventData.target.form.elements && this.EventData.target.form.elements.length != 0) {
for (var i = 0; i < this.EventData.target.form.elements.length; i++) {
if (this.EventData.target.form.elements[i].id && this.EventData.target.form.elements[i].id == this.EventData.target.id) {
var NextTabIndex = undefined;
if (i + 1 < this.EventData.target.form.elements.length) {
if (this.EventData.target.form.elements[i + 1].id && this.EventData.target.form.elements[i + 1].name && this.EventData.target.form.elements[i + 1].type && !excludeFields.includes(this.EventData.target.form.elements[i + 1].type)
&& this.EventData.target.form.elements[i + 1].readOnly == false) {
NextTabIndex = i + 1;
} else {
for (let index = i + 1; index < this.EventData.target.form.elements.length; index++) {
if (this.EventData.target.form.elements[index].id && this.EventData.target.form.elements[index].name && this.EventData.target.form.elements[index].type && !excludeFields.includes(this.EventData.target.form.elements[index].type)
&& !this.EventData.target.form.elements[index].readOnly) {
NextTabIndex = index;
break;
}
}
}
if (NextTabIndex != undefined) {
if (this.properties && Object.keys(this.properties).length != 0) {
var Exists: any;
var labelName = this.EventData.target.form.elements[NextTabIndex].name;
var parsedCols = JSON.parse(JSON.stringify(this.properties));
var arrayProp: any = Object.keys(parsedCols);
arrayProp.forEach(element => {
if (parsedCols[element] && parsedCols[element].label && parsedCols[element].label.toUpperCase() == labelName.toUpperCase()) {
Exists = parsedCols[element];
}
});
if (this.EventData && this.EventData.target && this.EventData.target.select) {
this.EventData.target.select();
}
var element = document.getElementById(this.EventData.target.form.elements[NextTabIndex].id);
// var event1 = new Event('change');
setTimeout(() => {
element.dispatchEvent(event);
}, 100);
return;
}
}
}
}
}
}
}
}
选项卡KeyEventIntabletMode(事件,currentdata){
var excludeFields:any=[“复选框”、“按钮”、“切换”];
if(this.EventData&&this.EventData.target&&this.EventData.target.id){
if(this.EventData.target.form&&this.EventData.target.form.elements&&this.EventData.target.form.elements.length!=0){
for(var i=0;i{
if(parsedCols[element]&&parsedCols[element]。label&&parsedCols[element]。label.toUpperCase()==labelName.toUpperCase(){
Exists=parsedCols[element];
}
});
if(this.EventData&&this.EventData.target&&this.EventData.target.select){
this.EventData.target.select();
}
var element=document.getElementById(this.EventData.target.form.elements[NextTabIndex].id);
//var event1=新事件(“变更”);
设置超时(()=>{
元素。dispatchEvent(事件);
}, 100);
返回;
}
}
}
}
}
}
}
}
以上一段时间工作不正常,循环迭代形式较大
请给我一些建议和参考,以实现标签键的角度形式使用虚拟键盘
任何帮助都是非常感激的
谢谢