2012-02-09 11 views
11

<input>を定義する方法はありますか?数字と小数点(または国際ユーザーの場合はカンマ)のみを許可するキーボード入力を示していますか? 数字と小数点のみを許可する入力を表示していますか?

<input type='tel'>

は、私は必要としない携帯電話のがらくた、および
<input type='number' pattern='[0-9]*'>は、すべての数字を示していない小数点、ない小数点

を示し、私は私が必要とする入力を取得するために何ができますか?

+0

-1?私はあなたの質問を最初に誤解しました。私が与えたのは、完全に準拠したブラウザで適切なデータ検証を行う正​​しいHTML5です。 [Apple Developer's Library](https://developer.apple.com/library/safari/#codinghowtos/Mobile/UserExperience/_index.html)リスト15は、実際に異なるiphoneキーボードを表示させるパターンを示しています。リストは網羅的で、良い一日です。 – chucksmash

+0

@IamChuckB:間違った答えが下降してしまいます。それは個人的ではありません。奇妙なことに、私はupvoteで正しいとあなたのコメントを受け入れていたでしょう! –

+0

十分に公正です。害はありません、ファウルはありません。 – chucksmash

答えて

0

真正なiOSアプリでこれを行っていた場合は、this questionに基づいてキーボードの上に自分のボタンを追加することもできますが、これはアクセサリビューについてですが、同じプロセスが有効です。

それ以外の場合、IamChuckBは正しく、five keyboard types given in the Apple Developer's Libraryは網羅的です。

+3

壊れたリンクpal :( – Picci

4

あなたはあなたのタイプ=「数」フィールドに、この属性を試すことができます。

pattern="\d+(\.\d*)?" 

これは、小数点なし/付き桁、右の浮動小数点数のみを許可します。

+2

NOTE#1:これはまだ完全なキーボードを持ちますが、数字/記号ペインではデフォルトです。ユーザーはまだ英数字に切り替えることができます** onblurイベントでパターンはキックインし、英数字(数字ではありません)** NOTE#2:作業するには、type = "number"とpattern = "\ d +(\ d \ *)"の両方でなければなりません。これは通常のブラウザとIOSのSafariで動作します –

+0

Chromeはtype = "number"をこのパターンと組み合わせるとエラーが発生しますが、Chromeは入力タイプ= "text"にパターンを確実に適用します – egid

+0

私は上記を試しましたが、うまくいきませんし、数字とドットだけが許されているときにフルキーボードを表示するユーザーが混乱しています。" – Mirko

1

JavaScriptの言語:Input Key Filterを使用して、Webページのテキスト入力要素の値のクロスブラウザフィルタの私のプロジェクトをご覧ください。値を整数値、浮動小数点数としてフィルタリングするか、電話番号フィルタなどのカスタムフィルタを書き込むことができます。 =>これは、単一の小数点以下のドットを許可する私のページも参照してくださいフロート数

<!doctype html> 
 
<html xmlns="http://www.w3.org/1999/xhtml" > 
 
<head> 
 
    <title>Input Key Filter Test</title> 
 
\t <meta name="author" content="Andrej Hristoliubov [email protected]"> 
 
\t <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
 
\t 
 
\t <!-- For compatibility of IE browser with audio element in the beep() function. 
 
\t https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible --> 
 
\t <meta http-equiv="X-UA-Compatible" content="IE=9"/> 
 
\t 
 
\t <link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css"> \t \t 
 
\t <script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script> 
 
\t <script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script> 
 
\t 
 
</head> 
 
<body> 
 
\t <h1>Float field</h1> 
 
Float field: 
 
<input id="Float" 
 
\t onchange="javascript: onChangeFloat(this)" 
 
\t onblur="inputKeyFilter.isNaN(parseFloat(this.value), this);" 
 
/> 
 
<script> 
 
\t CreateFloatFilter("Float"); 
 
\t 
 
\t function onChangeFloat(input){ 
 
\t \t inputKeyFilter.RemoveMyTooltip(); 
 
\t \t var elementNewFloat = document.getElementById("NewFloat"); 
 
\t \t var float = inputKeyFilter.parseFloat(input.value); 
 
\t \t if(inputKeyFilter.isNaN(float, input)){ 
 
\t \t \t elementNewFloat.innerHTML = ""; 
 
\t \t \t return; 
 
\t \t } 
 
\t \t elementNewFloat.innerHTML = float + " or localized value: " + float.toLocaleString(); 
 
\t } 
 
</script> 
 
New float: <span id="NewFloat"></span> 
 
</body> 
 
</html>

"Float field:" of the example of the input key filter

+0

ウェブ上の他のプロジェクトにリンクしている場合は必ず自己帰属を含めてください、それ以外の場合はスパムとみなされます –

+0

"自己帰属 "は何か分かりません。 – Andrej

+0

あなたのリンクの近くに何らかのメモを書いて、あなたが書いたことを明示してください。 –

0

を入力するコードの例を参照してください(。)

=>これは、ドットの後に3桁の10進値のみを許可します。 RegEx以下に{1,3}に変更することで変更できます。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

     if (!string.length) 
      return YES; 

     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
     NSString *expression = @"^([0-9]+)?(\\.([0-9]{1,3})?)?$"; 
     NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression 
                       options:NSRegularExpressionCaseInsensitive 
                       error:nil]; 
     NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString 
                  options:0 
                   range:NSMakeRange(0, [newString length])]; 
     if (numberOfMatches == 0) 
      return NO; 


     return YES; 

    } 
関連する問題