2013-02-21 229 views
6

我有一個表單上輸入數字的問題。當我輸入一個數字,如88.2並提交時,沒有問題。但是當這個人做同樣的事時,你可以在php代碼中看到如果你從數字輸入中回顯變量,它已經刪除了小數點(.)。HTML數字輸入刪除小數點?

但是,當他使用逗號時,它不會刪除他的小數點,但是當我使用逗號時,它會將其刪除。有沒有什麼辦法可以解決這個問題,讓它只接受「。」作爲小數點?

這裏的輸入:

<input id="version" name="version" step="0.1" min="1.0" max="250.0" type="number" class="input-small" placeholder="87.2"></input> 

沒有什麼在PHP代碼是不尋常的,只有

echo $_POST['version']; 

input-small css

.input-small { 
    width: 90px; 
} 
+0

我相信''只接受整數作爲有效值。允許的任何小數可能是由瀏覽器不正確/未實現的驗證。 – 2013-02-21 02:00:14

+2

注意:歐洲人使用逗號作爲小數點。你能強迫某種文化背景嗎? – 2013-02-21 02:14:58

+0

我知道我們使用了不同的標記,但是沒有辦法使它不能刪除點嗎?如果另一個人進入88.2它出現882,它真的很煩人。 – 2013-02-21 02:16:06

回答

2

Support to <input type=number>仍然是非常有限的,不完整的,和b uggy。

例如,在IE 10和Firefox 19上不支持。在這些元素上,元素會回退到<input type=text>元素,這意味着任何字符串都會被接受爲輸入並傳遞到服務器,因此無需檢查。

在支持它的瀏覽器,如Chrome瀏覽器的行爲變化,並有望改變,因爲HTML5 CR definition故意離開它打開:需要瀏覽器以某種方式提供數字輸入控件和保證根據元素的屬性(在給定的範圍內等),最終發送到服務器的數據是正確的。

實際上,實現取決於區域設置的瀏覽器,並且您無法將其作爲作者控制。這意味着瀏覽器可能接受88.2,或者它可能接受88.2(並在內部將其轉換爲88.2),或者它可能接受兩者,或者原則上可能只接受象形文字輸入(並在內部將其轉換爲規範形式)。它甚至可以解析用戶輸入,以便任何多餘的字符被丟棄,這意味着當逗號是小數點分隔符時,88FOO和88.2可能會被截斷爲88。

你的情況很難確定,因爲瀏覽器和平臺沒有被描述過,而且服務器的功能還不清楚。但重要的是<input type=number>根本不能依賴。它可用於每個人在同一個操作系統中使用相同版本的相同瀏覽器的受控環境,直到幷包括語言版本和區域設置。否則,請使用<input type=text>作爲數字輸入並解析輸入服務器端,並可選擇預先檢查它的客戶端,並確保通知用戶輸入的期望格式(如小數點逗號與小數點)。