输入事件不会使用角度触发Android设备上的功能
Posted
技术标签:
【中文标题】输入事件不会使用角度触发Android设备上的功能【英文标题】:Enter event doesn't trigger the function on Android device using angular 【发布时间】:2020-01-26 12:56:41 【问题描述】:有多个问题的答案与我的问题相关,但不幸的是,没有一个对我有用。
我必须检测到在 android 键盘上按下的输入并将焦点从当前 matInput 更改为下一个 matInput。
我尝试过keyup.enter
、keydown
和keypress
,但没有一个对我有用。我实现了指令方法,但在 Android 设备上调试应用程序时没有触发方法。虽然,它确实触发了浏览器上的方法。
这是我正在使用的。
HTML:
<mat-form-field class="ib-input-container-width">
<input matInput data-dependency="lastName" (keypress)="onChange($event.keyCode)" (keyup.enter)="handleNext('lastName')" [formControl]="form.get('FirstName')" type="text" >
</mat-form-field>
<mat-form-field class="ib-input-container-width" >
<input #lastName id="lastName" matInput [formControl]="form.get('LastName')" type="text">
TS:
handleNext(elementId)
let nextElement = document.getElementById(elementId);
console.log(nextElement);
nextElement.focus();
onChange(event)
console.log(event.keycode);
PS:我正在开发一个使用 Cordova 的渐进式网络应用程序。
更新
我已经尝试了https://***.com/a/28103608/3081929 的解决方案 但是 ng-change 也不起作用。
【问题讨论】:
你试过keydown
事件,并检查TS中的关键代码是什么?
我试过了,但它甚至没有触发该方法。
嗨,你试过keyup吗? document.addEventListener('keyup', getInput, false); function getInput(e) //你的代码
也试过了,在浏览器中完美运行,但在 android 中不行。方法未触发。
当你在没有enter
的情况下使用keyup
事件时是否会触发它 -> (keyup)="handleNext('lastName')"
?您问题中的答案链接也链接到 angularjs 解决方案。您是否使用(change)
或(input)
事件尝试过?
【参考方案1】:
代码看起来正确,
在 android 上运行您的 codova 应用程序之前,请确保您已使用 angular cli 编译了 angular 项目,并且输出应设置为 www 文件夹
【讨论】:
我是直接运行应用程序,但没有考虑再次编译。感谢您的建议。以上是关于输入事件不会使用角度触发Android设备上的功能的主要内容,如果未能解决你的问题,请参考以下文章
iOS 9 上的 Safari 不会触发隐藏输入文件的点击事件
Xamarin.Android EditText事件未在设备上触发