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

テキスト入力フィールドに attr を追加nameすると、Opera は期待どおりにフォームを送信します (仮想キーボードに "Done" ではなく "Go" と表示されます)。

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

OperaMobileで「完了」キーが押されたことをキャッチする方法は本当にないようです。

  • キーダウン/キープレスをトリガーしないため、キャッチするキーコードはありません
  • ぼかし/フォーカスロストのどちらでもない(「完了」を押した後でもフォーカスはフィールドに留まります)
  • すべてのキータイプで火を変更/入力します(「完了する」前の方法です)
  • 送信イベントも発生しません

唯一の解決策は、「OperaMobile」ブラウザの「送信」ボタンを表示することだと私には思えます。

于 2012-08-16T08:54:01.980 に答える
0

必ず:

  • フォームにIDを与える
  • 名前がわからないので、opera mobile で "done" イベントをキャッチします。
  • ID でフォームを取得し、イベントでそのsubmit()メソッドを呼び出します。done

イベントに関して、私はいくつかの情報を見つけました:

Opera 開発者のウェブサイト:

Opera Presto は DOM 2 Events を例外なく完全にサポートしています。

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 テクノロジとは異なり、特定のタッチ イベントについては何も言いません。そのため、keypress/up/down をキャッチし、keyCode/which 属性を解析し、「DONE」の 1 つと比較して (いくつかのアラートは適切なアラートを提供します)、form.submit();メソッドを呼び出す必要があります。

rgds。

于 2012-06-01T16:14:55.327 に答える