2017-06-20 66 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-separators-with-html5-input-type-number – Rulisp

+0

我已經在服務器端添加了解決方法,閱讀你鏈接的文章,我決定通過添加'formnovalidate'到我的表單並用Javascript寫一個函數。我也決定去點作爲小數分隔符,因爲我在網頁上顯示的值也使用點。但是現在我又遇到了另一個問題,因爲如果我以「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位小數

相關問題