![](/img/trans.png)
[英]Allow only positive values in html input element (including decimal values)
[英]Allow only numeric input, including negative and decimal
該問題涉及只允許在輸入文本字段中輸入數字字符。 我必須做同樣的事情,除了必須允許負號和十進制。 該解決方案還需要在iOS 6和iOS 7的 Mobile Safari中工作。
我已經測試了接受的解決方案,該解決方案基於檢查keyup事件處理程序中的密鑰 代碼 ,但是該解決方案在我的iPad上不起作用,因為它允許輸入以下字符:
()$&@!
以下代碼基於此解決方案 :
('input.numeric').keyup(function(e) {
this.value = (this.value.replace(/[^0-9.\,-]/g, ''));
});
盡管此代碼在我測試過的台式機瀏覽器(例如Chrome)中運行良好,但在Mobile Safari上似乎效果不佳。 在iOS 5上 ,這的確允許輸入數字字符和減號,但是這導致光標位置的行為異常,光標通常出現在輸入的字符之前。 在iOS 6上 ,由於某些原因,這不允許輸入減號,只能輸入數字字符。
是否有人有在Mobile Safari上正常工作的解決方案。 我在這里尋找一種純Javascript解決方案,或者僅依賴jQuery的解決方案。 請不要回答“使用這個或那個庫”,也不要發表有關Javascript驗證不安全的評論。
看看這個...
var prevVal = '';
$(".numericValue").on("input", function (evt) {
var self = $(this);
if (self.val().match(/^-?\d*(\.(?=\d*)\d*)?$/) !== null) {
prevVal = self.val()
} else {
self.val(prevVal);
}
if ((evt.which != 46 || self.val().indexOf('.') != -1) && (evt.which < 48 || evt.which > 57) && (evt.which != 45 && self.val().indexOf("-") == 0)) {
evt.preventDefault();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.