输入事件不会使用角度触发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.enterkeydownkeypress,但没有一个对我有用。我实现了指令方法,但在 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 不会触发隐藏输入文件的点击事件

UITextField 更改事件不会针对语音或粘贴输入触发

Xamarin.Android EditText事件未在设备上触发

无线电输入上的 onclick 事件未触发功能

iPad 上的 HTML5 视频元素不会触发 onclick 或 touchstart 事件?

如何以角度在 ag-grid 上触发 firstDataRendered?