2012-06-07 45 views
29

私はクーポン会社のフロントエンドサイトを開発しており、電話番号と$$の入力が必要なページがあります。私たちはJavascriptで構築された面白い画面キーボードを思いつきました。これは使いやすく高速です。しかし、ユーザーがフォーカスしてテキスト/数字を入力すると、ソフトキーボードがポップするのを止めるソリューションを探しています。HTMLモバイル - ソフトキーボードを非表示にする

HTML5が出現した「番号/電話/メール」タイプの属性について知っています。しかし、狂ったように聞こえる危険があるので、画面上のキーボードを使用したいと思っています。

注:このウェブサイトは主にタブレットをターゲットとしています。

ありがとうございました。

+1

これは狂っています。標準入力フィールドを使用する場合は、標準入力メソッドを使用します。 – egrunin

+7

それにもかかわらず、スクリーンキーボードを使用することには多くの利点があります。 これは、オーディエンスのニーズ、セカンドセーフティ、第3画面の不動産を密接にターゲットとするために、高度にカスタマイズ可能です。;-) – crodica

+0

ああ、私は "front end * site *"を "front end * app *"と誤解しています。あなたはウェブサイトでユーザーの期待に余裕ができます。 – egrunin

答えて

34

ソフトキーボードはOSの一部であるため、非表示にすることはできません。また、iOSでは、キーボードからフォーカスがドロップされることもありません。あなたはすぐにテキスト入力を入力の上onFocus属性を使用して、blur()場合

しかし、キーボード自体を非表示になりますし、onFocusイベントが入力が最後に焦点を当てたテキストを定義する変数を設定することができます。

次に、ページ上のキーボードを変更して、キー入力をシミュレートするのではなく、最後にフォーカスを当てた(変数を使ってチェックする)テキスト入力のみを変更します。

+0

ありがとうございました。画面上のキーパッドを使わずに、通常のHTMLフォームでテストしたところ、あなたの提案は完全に機能しました。私が実装しているjqueryモバイル、または私が使用しているキーボードオブジェクトは、私がまだ見つけていない独自のフォーカスイベントを作成しているようです(「フォーカス」はライブラリのどこかに名前空間があります)。今のところ、私たちのクライアントはこのアイデアを気に入っていましたが、ソフトキーボードがポップアップしていたという事実は止まっていましたので、この機能を省略しています。 : 興味があれば、キーボードライブラリーは https://github.com/Mottie/Keyboard – crodica

+4

透明なdivを置くとどうなるでしょうか? '

Text:
'。親divの相対的な(または絶対的な)位置付けは、絶対的に配置された子が親に対して相対的になるようにします。 –

36

Scott Sさんの回答が完璧に機能しました。

私はモバイル用のWebベースの電話ダイヤルパッドをコーディングしていましたが、ユーザーがキーパッド上の数字(テーブル内のtdスパン要素で構成)を押すたびに、ソフトキーボードがポップアップ表示されます。また、ダイヤルしている番号の入力ボックスをタップすることもできないようにしたいと考えました。これは実際には1つのショットで両方の問題を解決しました。以下を用いた:さらに読者/サーチャーのために

<input type="text" id="phone-number" onfocus="blur();" /> 
+1

実際には、この回答は私のためにうまく機能しました@ScottSからの回答よりも、彼の答えに無頓着です。私は、html入力ステートメントと$(document).ready()との間の経過時間がキーボードの発射を許していたのに対し、onfocus = blur();速く、少なくとも私の心の中で、そしてキーボードが発射するのを妨げて、 – HumbleBeginnings

10

を:

Rene Potthis topicに指摘するように、

readonly="true"する入力フィールドを設定することであなたが何も入力 誰を防ぐ必要がありますそれでも、クリック イベントを起動することができます。

この方法を使用すると、「ソフト」キーボードをポップアップさせずに、クリックイベントを開始したり、オンスクリーンキーボードで入力を埋め込むことができます。

このソリューションは、一般に既にコントロールを実装している日時選択ツールでも正常に動作します。

0

例最大長を塗りつぶした後に、 フィールドからぼやけてしまいます。複数のフィールドがある場合は、追加するラインを追加するだけで済みます( 'キーボードは消えます)/'

var MaxLength = 8; 
    $(document).ready(function() { 
     $('#MyTB').keyup(function() { 
      if ($(this).val().length >= MaxLength) { 
       $('#MyTB').blur(); 
      // $('#MyTB2').focus(); 
     } 
      }); }); 
関連する問題