0

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

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

在桌面浏览器上,这可以按预期工作 - 您输入文本,按 Enter,然后脚本就会执行。

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

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

4

3 回答 3

2

nameattr 添加到文本输入字段,Opera 将按预期提交表单(它将在虚拟键盘上显示“Go”而不是“Done”)。

<input name="whatever" type="text" />
于 2012-11-28T00:42:38.013 回答
0

你必须:

  • 给你的表格一个 id
  • 在opera mobile下捕捉“done”事件,恐怕我不知道它的名字
  • 获取带有 id 的表单并在事件中调用其submit()方法。done

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

Opera 开发者网站:

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/which 属性,与“DONE”(一些警报会给您一个好的)比较,然后调用该form.submit();方法。

rgds。

于 2012-06-01T16:14:55.327 回答
0

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

  • 它不会触发keydown/keypress,因此没有要捕获的键码
  • 既不模糊/焦点丢失(即使在点击“完成”后焦点仍留在现场)
  • 使用每种键类型更改/输入火(所以这是“完成”之前的方式)
  • 提交事件也永远不会触发

在我看来,唯一的解决方案是真正为“Opera Mobile”浏览器显示“提交”按钮

于 2012-08-16T08:54:01.980 回答