web-dev-qa-db-ja.com

iPhone GOボタンを取得してフォームを送信する

IPhoneの仮想キーボードのGOボタンがフォームを送信するのではなく、フォームに送信する変数を知っている人はいますか?

私はシナリオを絞り込もうとしており、これが私が見つけたものです:

  • fORMにユーザー入力フィールドが1つしかない場合、goボタ​​ンは自動的にフォームを送信します

  • fORMに複数のユーザー入力フィールドがあるが、INPUT TYPE = "SUBMIT"がない場合、GOボタンはフォームを送信しません。

  • fORMに複数のユーザー入力フィールドがあり、INPUT TYPE = "SUBMIT"がある場合、[実行]ボタンはフォームを送信します。

しかし、それは完全に正確ではありません。3番目が機能していない状況に陥っているからです。

GOボタンが機能するか機能しないかを決める他の要因を知っている人はいますか?

38
DA.

したがって、ここに特定の問題がありました。

複数のユーザー入力フィールドを持つフォームがありましたが、真の<input type="submit">(JS経由で送信されていました)はありませんでした。

そのため、GOボタンは何もしませんでした。

次に、<input type="submit">を追加して、display: noneに設定します。いや。動作しませんでした。

気まぐれに、表示を変更しました:noneをmargin-left: -1000px

うまくいきました!

どうやら、Safariはフォーム内のSUBMITボタンの存在を探しており、それが表示されていない場合のみ:なし、GOボタンを押すと起動します。

50
DA.

複数の入力があり、送信を非表示にしたい場合、最良のようです:

<input type="submit" style="visibility:hidden;position:absolute"/>
21
Jiri Kopsa

キープレスリスナーを要素またはフォームにバインドすることもできます。 iPhoneの「実行」ボタンは、コンピューターの入力ボタンと同じです(13文字目)。

$('someElem').bind("keypress", function(e){
    // 'Go' key code is 13
    if (e.which === 13) {
       console.log("user pressed Go");
       // submit your form with explicit JS.
    } 
 });
4
David Merritt

他の人から与えられたコードは正しいです。 jQuery Mobileを使用している場合は、追加します

data-role="none" 

submit入力要素に。そのようです:

<input type="submit" data-role="none" style="visibility: hidden; position: absolute;" />
1
Jonny Forney

Input type = 'search'をformタグで囲むだけで、この問題が発生したときにうまくいきました。うまくいけば、この問題を抱えている他の人にも役立つかもしれません。

0
Oz Lodriguez

以下は、ページでの副作用を最小限に抑えて、私に合った送信ボタンのスタイルです。

.... style="width: 0px ; height: 0px" ....
0
Bitonator