AndroidのモバイルWebサイトで数字でキーボードを強制する方法


91

私はモバイルWebサイトを持っていinputて、次のようなHTML 要素が含まれています。

<input type="text" name="txtAccessoryCost" size="6" />

私はサイトをWebViewAndroid 2.1で使用できるように埋め込んでいるので、これもAndroidアプリケーションになります。

このHTML input要素がフォーカスされている場合、文字のデフォルトのキーボードの代わりに数字のキーボードを取得することは可能ですか?

または、HTML要素に適さない場合アプリケーション全体(マニフェストファイル何か)に設定できますか?


Androidに加えてiOSでテンキーが必要な場合は、次のようにします。stackoverflow.com/ a / 31619311/806956
Aaron Gray

2
このinputmode="number"属性は2019年後半には正解のようです:developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/…。このコメントの時点での最高投票数の回答はtype="number"、を示唆しています。これには、独自の落とし穴がいくつかあります。inputmode入力自体の動作/制約ではなく、仮想キーボードの表示にのみ影響を与えるように見えます。
SheffDoinWork

回答:


112
<input type="number" />
<input type="tel" />

これらはどちらも、入力にフォーカスが移ったときにテンキーを表示します。

<input type="search" /> 追加の検索ボタンがある通常のキーボードを示します

それ以外はすべて標準キーボードを表示するようです。


今日それを見て、それがうまくいくかどうかを知らせます。リチャード、ありがとう!
ncakmak 2010

1
こんにちはリチャード。動作しませんでした。入力フィールドはまだ標準キーボードを開いています。
ncakmak 2010


1
のキーボードtype="tel"、のキーボードよりも数字を入力する方が悪いことに注意しくださいtype="number"
Rory O'Kane 2013

2
<input type="text" pattern="\d*" /> 数字キーボードも表示されますが、iOSではのみで、Androidでは表示されません
Rory O'Kane 2013

50

重要な注意点

これはコメントではなく回答として投稿しています。これはかなり重要な情報であり、この形式でより注目されるためです。

他のフェローが指摘したように、デバイスでtype="number"/ を使用して数字キーボードを表示するように強制できますがtype="tel"、これには非常に注意する必要があることを強調しておきます。

のようにゼロで始まる数値を予期している場合000222、一部のブラウザー(デスクトップChromeなど)がサーバー222に送信するため、彼女は問題を抱えている可能性が高く、これは彼女が望んでいないことです。

type="tel"私は似た何かを言うことはできませんが、別の電話にその動作を変えることができて、個人的に私は、それを使用しないでください。私は自分をpattern="[0-9]*"Androidで機能しないシンプルに制限しました


4
自動再フォーマットはおそらくで起こりませんtype="tel"スペックノートtelとは異なり、特定の構文、強制しないnumber、その値があることを必要とする、有効な浮動小数点数を
Rory O'Kane 2013

どれくらい悪い?私たちはモバイルユーザーのフォームプロセスを高速化しようとしています。これは明白な解決策のようですが、信頼できるものも必要です。このメソッドの使用に対する強い警告を投稿しました。それについてもう少し詳しく説明していただけませんか。
Philll_t 2015年

@Philll_t、ユーザーは「000222」データを送信する必要がありますが、サーバー側では代わりに「222」を取得します。機能が完全に壊れているのがわかりませんか?サーバーは間違ったデータを取得します。
user907860 2015年

はい、私はあなたが何を意味しているのかはわかりますが、私が言っているのは、ユーザーの何パーセントがこれを見ているのですか?これはSafariやChromeなどの主要なモバイルブラウザーの問題ですか?これが問題であることをどのようにして知っていますか。提供できるリンクはありますか。私はあなたを信じています。私は自分自身を調査したいだけで、これを示唆するものは何も見ていません。おそらく私を正しい方向に向けることができます。私たちは、顧客ベースがこれから利益を得られないかどうかを確認しようとしています。
Philll_t 2015年

1
@Philll_tこの警告の最良の例は、生年月日入力フィールドです。日、月、年を手動で入力する必要がある場合。そして、はい、まだ多くのウェブサイトが一般的に使用される日付ピッカーの代わりにこのスタイルを使用しています。出生入力フィールドの日付の問題については、お使いの日または月には「0」、例えば08で起動時に入力されている
ロビン・カルロCatacutan

8

これはうまくいくはずです。しかし、私はAndroidフォンでも同じ問題を抱えています。

<input type="number" /> <input type="tel" />

jquerymobile-frameworkを含めなかった場合、キーパッドは2種類のフィールドで正しく表示されることがわかりました。

しかし、本当にjquerymobileを使用する必要がある場合は、その問題を解決する解決策を見つけられませんでした。

更新: 私は、フォームタグが

<div data-role="page"> 

数字キーパッドは表示されません。これはバグであるに違いありません...


これを掘り下げてくれてありがとう。ただし、「フォームタグがdiv [data-role = page]の外に保存されている場合」は理解できません。私の場合、問題はdiv [data-role = page]内にうまくネストされたフォームで発生します。おそらく問題は、これらのページが私の場合、ダイアログとして表示されていることですか?
Wytze

6

inputmodeWHATWG仕様によると、デフォルトの方法です。

iOSデバイスの場合、追加するpatternことも役立ちます。

typeChromeはバージョン66以降で使用するため、下位互換性のためにも使用します。

<input
  inputmode="numeric"
  pattern="[0-9]*"
  type="number"
/>

答えてくれてありがとう、私が探していたdecimalし、ここでそれを見つけdeveloper.mozilla.org/en-US/docs/Web/HTML/Global_attributes/...
ラミAlloush

2

一部のブラウザは、入力タイプが「数値」の場合、先行ゼロをサーバーに送信します。したがって、jqueryとhtmlを組み合わせて数値キーパッドをロードし、値が数値ではなくテキストとして送信されることを確認します。

$(document).ready(function(){
$(".numberonly").focus(function(){$(this).attr("type","number")});
$(".numberonly").blur(function(){$(this).attr("type","text")});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numberonly">


3
これにより、Chrome for Androidで厄介な問題が発生します。入力をタップしても、キーボードは表示されませ。次に、テキストボックスをもう一度タップする必要があります。そうすると、キーボードには数字のみのキーボードが表示されます。私は本当にtype="digits"これらのハックをする必要がなかったのでオプションがあったらいいのにと思います。つまり、先頭がゼロの数字がそのようにまれであることとは異なります(米国の郵便番号は明白な例です)。
Jaxidian 2017

2
私も同じ問題に直面しています!フィールドを "type = tel"に設定することは、まだ最善の解決策です。
Ali Sheikhpour 2017

-2

input type = number

数値入力を提供する場合は、HTML5 input type = "number"属性値を使用できます。

<input type="number" name="n" />

iPhone 4に登場するキーボードは次のとおりです。

HTML5入力タイプ番号のiPhoneスクリーンショットAndroid 2.2では、type = numberにこのキーボードを使用しています。

HTML5入力タイプ番号のAndroidスクリーンショット


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.