2017-06-20 32 views
0

私はIE11で私に問題を与えている入力タイプ= "数字"のフォームを持っています:いくつかの値が受け入れられ、他のものは明らかにランダムにはありません。IE11と入力タイプ= "番号"

<input type="number" style="text-align:right" min="1.00" placeholder="1,00" name="value-name" id="value" step="0.01" title="title" required/> 

IE11は、9.2、9.4、9.5、9.6、9.7、9.9を受け入れますが、9.3と9.8を拒否し、いくつかの理由:

は、ここでは、コードです。これは単なる例であり、すべての数字で起こっており、その理由を理解していません。さらに、いくつかの数字は数分前に受け入れられましたが、今はもう数字ではありません。

私はヨーロッパにいるので,は小数部の区切り文字であり、.ではないため、これまでの値はすべて有効ではありません。代わりに,を使用すると、IEは.にそれを転送せず、POSTによってPHPに渡されたときにPHPのis_numeric()がfalseを返します。

どうすればこの作業を行うことができますか?ありがとう

+1

回避策として、サーバ側のドットでカンマを置き換えることができます 'return preg_replace("/[^ 0-9 \\。]/"、null、str_replace("、 "、"。 "、$ string) ); ' – Rulisp

+0

また、私はこの記事をSO - https://stackoverflow.com/questions/15303940/how-to-handle-flで見てください。 oats-and-decimal-separator-with-html5-input-type-number – Rulisp

+0

私はサーバー側で回避策を追加しました。リンクした投稿を読んで、私は 'formnovalidate'を追加してチェックを実装することにしました私のフォームとJavascriptで関数を書く。また、ドットを小数点区切り文字として使用することにしました。これは、Webページに表示される値がドットを使用するためです。しかし、今では別の問題があります。たとえば、 "6.5"のような書式でJavascript 'document.getElementById(" value ")。value'を実行すると、Firefoxは空の文字列を返します。私が小数点区切り記号としてカンマでそれを書く場合。 – RVKS

答えて

0

.,の両方を小数点として受け入れるように修正しました。

私は、フォームの入力に属性formnovalidate lang="en"を追加し、次のコードでは、JavaScriptによるフォームの検証を行った:

function validateForm(minValue) { 
var number = document.getElementById("value").value.replace(",","."); 
if(number != "") { 
    var isNaNres = isNaN(parseFloat(number)); 
    var isFiniteRes = isFinite(number); 
    if (!isNaNres && isFiniteRes && number >= minValue && number.match("^[0-9]+(\.[0-9]{1,2})?$")) 
     return true; 

} 
alert("<Error message>"); 
return false; 
} 

正規表現の一致が数が最大小数点以下2桁に持っていたことを保証するために必要でした

関連する問題