簡體   English   中英

僅允許數字輸入,包括負數和十進制

[英]Allow only numeric input, including negative and decimal

該問題涉及只允許在輸入文本字段中輸入數字字符。 我必須做同樣的事情,除了必須允許負號和十進制。 該解決方案還需要在iOS 6iOS 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM