2012-02-10 4 views
12

これは私を狂った運転しています、私はどこでも答えを見つけることができません。html phonegapアンドロイド:数字のソフトキーボードは、ボタンの代わりに次のボタンを持っています

私のphonegapアプリにはフォームがあります。入力タイプ= "text"の場合、テキストキーボードがポップアップし、コーナーに "go"が表示されます。 goをクリックすると、フォームが送信されます。それは私が期待するようにすべて動作します。しかし、input type = "number"を使用すると、数値キーボードがポップアップし、 "next"がコーナーに表示されます。次をクリックすると、ボタンタグの前に別の入力ボックスがある場合は、その入力に移動します。大丈夫。 。 。理想的ではありませんが、意味があります。しかし、それがページの最後の入力フィールドであれば、「次へ」をクリックしても何もしません。ボタンにフォーカスを当てず(tabindexを使っても)、フォームを送信しません(理想的です)。

私はphonegap 1.3.0とjquery 1.7を使用しています。

+0

+1これは、私はすべてを試しています。一方、PhoneGapはバージョン1.5.0までで、jQueryMobile 1.0.1を使用しています。進歩はありません。フィールド属性の結果であれば試したが役に立たない。 – Wytze

+0

これはPhoneGapの問題ではありません。通常のAndroidブラウザでも発生します。 –

+0

これはphonegapとは関係ないことは事実です。私のアプリはphonegapなので、それを修正するJavaベースのメソッドがあったと思うだろうが。私が今までに見つけた唯一の修正点は、オートがフォームを提出するウィッツの隠されたフィールドです。ひどいハックですが、私たちは2.0まで電話で対応しています。私はまだこれをAndroid開発者の面で非常に不快な決断と見なしています。 – grail143

答えて

5

今、私は答えのように見えるものがあり、答えのように突き刺さるものがあります。

これは恐ろしいハックですが、私はこの時点でいくつかの副作用を経験していますが、とにかく人類の小さな飛躍です。

フォームに非表示のテキスト入力を追加すると、フォームにフォーカスを取得すると自動的にフォームが送信されます。ユーザーが「次へ」または最後の数字フィールドからタブを押すだけでフォーカスを受け取ることができるので、ユーザーのシーケンスには非常に固いロジックがあるはずです。

<input type='text' style="opacity:0;" onfocus="javascript:$('#thisForm').submit();"> 

副作用がある:

  • 隠しフォームフィールドは簡単に見えるであろう。 によってこれを回避するには、onfocusハンドラを使用して、 がちょうど残っていた番号フィールドに再度フォーカスします。または、入力の幅を0に設定することもできます。
  • 私のようにjQueryMobileを使用している場合は、自分自身で恐ろしいページ遷移の醜さを招いているので、フォームがダイアログにありフォームを送信してダイアログを閉じると、ダイアログ遷移を設定してください前の画面から開いている)を「なし」に設定します。
+0

それはとても役に立ちました!ありがとう! – grail143

+0

HTC G2 Androidバージョン2.3.4では、幅:0を持つことで入力を隠すことができませんでした。しかし、私はbackground-color:transparentを使用してそれを隠すことができ、-webkit-tap-highlight-color:rgba(255,255,255,0); http://stackoverflow.com/questions/5210481/disable-android-orange-outline-higlight-on-focus – Bobby

+0

ハッキーだが役立つ!私は 'position:absolute'を設定して入力を隠しました – maGo

9

あなたはjQueryの中に次のバインドを使用して、次の鍵盤を押しを検出することができます。

$('input').on('keydown', function(e){ 
    if(e.which === 9) { 
     //your code here 
    } 
}); 

「次へ」ボタンは、キーコード残念ながら9でキーボードのタブキー押下イベントが、エミュレートkeypressとkeyupイベントは次のキーイベントを検出しないので、keydownにバインドする必要があります。

希望に役立ちます!

関連する問題