如何使用虚拟键盘在 Opera Mobile 中为简单表单触发 onsubmit() 事件

How do I trigger onsubmit() events for simple forms in Opera Mobile with a virtual keyboard?

本文关键字:表单 onsubmit 事件 简单 键盘 虚拟 何使用 Opera Mobile      更新时间:2023-09-26

我有一个通常只有一个可见文本输入的小应用程序,按回车键会触发 JavaScript 方法,而不会触发正常的表单提交。这是一个非常简单的测试用例:

<form onsubmit="document.write('form submitted!');return false">
    <input type="text">
    <input type="submit" style="display:none">
</form>

在桌面浏览器上,这按预期工作 - 您输入文本,按 Enter 键,脚本将执行。

但是,在Opera Mobile上,专注于文本输入会弹出一个虚拟键盘;如果您输入文本并触摸"完成",文本将传输到输入字段,但不会提交表单。也没有"输入"

我希望该应用程序在浏览器和设备上的行为方式相同,而不是使提交按钮仅在 Opera Mobile 中可见。

name属性添加到文本输入字段中,Opera 将按预期提交表单(它将在虚拟键盘上显示"Go"而不是"完成")。

<input name="whatever" type="text" />

你必须:

  • 为您的表单提供 ID
  • 赶上歌剧手机下的"完成"事件,恐怕我不知道名字
  • 获取具有其 ID 的窗体,并在 done 事件中调用其 submit() 方法。

关于活动,我发现了一些信息:

歌剧开发者网站:

Opera Presto 完全支持 DOM 2 事件,无一例外。

http://www.opera.com/docs/specs/presto2.11/dom2/events/

W3C:

6.1.2.4 虚拟键盘和和弦键盘

虚拟键盘是基于软件的键集,具有各种 不同的排列方式,常见于触摸屏设备;他们 通常是模态的,能够在不同的动态之间切换 键集,例如字母键、数字键或符号键。因为 由于缺乏物理限制,这些键盘可能会呈现 最广泛的字符,包括表情符号和其他符号,以及 可能具有未由 Unicode [Unicode] 或密钥表示的键 此规范中定义的值。但是,只要有可能, 虚拟键盘应生成正常范围的键盘事件 和值,以便于创作并与现有 内容。

http://www.w3.org/TR/DOM-Level-3-Events/

基本上,它没有说明任何特定的触摸事件,这与webkit技术不同。因此,您必须抓住按键/向上/向下,解析 keyCode/哪个属性,与"完成"之一进行比较(一些警报会给你好的警报),然后调用 form.submit(); 方法。

RGDS。

似乎真的没有办法在Opera Mobile中捕捉到"完成"按键:

  • 它不会触发按键/按键,因此无需捕获键码
  • 既不模糊/失焦(即使点击"完成",焦点仍留在视场中)
  • 更改/输入触发每个键类型(所以这是在"完成"之前的方式)
  • 提交事件也永远不会触发

在我看来,唯一的解决方案实际上是显示"Opera Mobile"浏览器的"提交"按钮