【问题标题】:Trying to remove non numeric characters from textbox using jQuery尝试使用jQuery从文本框中删除非数字字符
【发布时间】:2015-08-11 01:00:15
【问题描述】:

我正在尝试删除输入/键入的字符以测试它是否是数字,如果是数字,请保留它,如果不是,请删除它。它可以超过一位数。例如,我输入一个“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);
                }                   
            });      

        });            

【问题讨论】:

  • use keypress 在下面检查我的 sn-p:您可以截取传入的值并决定要做什么,因此最好使用 keypress 否则您的文本每次都会被替换。例如,如果您在输入 val 的中间并且您正在编辑插入符号,则在其他情况下会跳到末尾,因为整个文本都被替换了

标签: javascript jquery .net regex textbox


【解决方案1】:

你可能想试试这个:

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

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

【讨论】:

    【解决方案2】:

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

    $("#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 />

    【讨论】:

    • A-Z = 65-90 和 a-z = 97-122
    【解决方案3】:

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

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

    完整的sn-p:

    $('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"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      相关资源
      最近更新 更多