尝试使用 jQuery 从文本框中删除非数字字符

Trying to remove non numeric characters from textbox using jQuery

我正在尝试删除一个字符,因为它 typed/keyed 最多测试它是否是一个数字,如果它是一个数字,请保留它,如果不是,请将其删除。它可以超过一位数。例如,我输入 "d",它应该从文本框中删除。然后我输入一个“1”,它应该留在文本框中。然后我键入一个 4,它也保持不变,所以文本框现在显示为“14”。然后我输入 "g",它应该被删除。然后我输入“5”,现在文本框显示为 145。这就是我目前的结果。

   $("#txtTestNumbersOnlyRegex").keyup(function () {

            $("#txtTestNumbersOnlyRegex").val(function (index, value) {
                var keyPressed = value.substr(0, value.length - 1);
                var regEx = new RegExp("/^5$/");
                if(!regEx.test(keyPressed)) {
                    alert("true");
                    return value.substr(0, value.length - 1);
                }                   
            });      

        });            

您可能想试试这个:

$("#txtTestNumbersOnlyRegex").keyup(function () { 
    var newValue = $(this).val().replace(/[^0-9]/g,'');
    $(this).val(newValue);    
 });  

你可以在这里试试https://fiddle.jshell.net/aooh0gkz/

您可以使用正则表达式将任何非数字替换为空 space,尽管这看起来有点奇怪。

$('input').keyup(function() {
    $(this).val($(this).val().replace(/\D/, ''));
});

完整片段:

$('input').keydown(function() {
        console.log($(this).val());
        $(this).val($(this).val().replace(/\D/, ''));
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">


或者如果您不关心 IE support,您可以使用 input type="number"

您可以拦截传入的值并决定要做什么,所以最好让按键,否则您的文本每次都会被替换,并说如果您在输入值的中间并且您正在编辑插入符号其他情况跳到最后

$("#txtTestNumbersOnlyRegex").keypress(function (event) {
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    if((keyCode>=65 && keyCode<=90) || (keyCode>=97 && keyCode<=122))
        return false;
    else return true;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type=text id = txtTestNumbersOnlyRegex />