如何使用jQuery仅允许HTML输入框中的数字(0-9)?

Pra*_*ant 869 html validation jquery numeric

我正在创建一个网页,其中我有一个输入文本字段,其中我只允许数字字符,如(0,1,2,3,4,5 ... 9)0-9.

我怎么能用jQuery做到这一点?

kgi*_*kis 1221

jQuery的

注意:这是一个更新的答案.下面的评论是指使用密钥代码搞乱的旧版本.

<input>以下脚本中的插件允许您对文本使用任何类型的输入过滤器inputFilter,包括各种数字过滤器.这将正确处理自IE 9以来的复制+粘贴,拖放,键盘快捷键,上下文菜单操作,不可键入的键,光标位置,所有键盘布局和所有浏览器.请注意,您仍然必须进行服务器端验证!

在JSFiddle上自己尝试一下.

// Restricts input for the set of matched elements to the given inputFilter function.
(function($) {
  $.fn.inputFilter = function(inputFilter) {
    return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() {
      if (inputFilter(this.value)) {
        this.oldValue = this.value;
        this.oldSelectionStart = this.selectionStart;
        this.oldSelectionEnd = this.selectionEnd;
      } else if (this.hasOwnProperty("oldValue")) {
        this.value = this.oldValue;
        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
      } else {
        this.value = "";
      }
    });
  };
}(jQuery));
Run Code Online (Sandbox Code Playgroud)

用法:

$(document).ready(function() {
  $("#myTextBox").inputFilter(function(value) {
    return /^\d*$/.test(value);    // Allow digits only, using a RegExp
  });
});
Run Code Online (Sandbox Code Playgroud)

您可能想要使用的一些输入过滤器:

  • 数值(正面和负面):
    inputFilter
  • 数值(仅限正数):
    <input type="number">
  • 数值(正数且达到特定限制):
    step
  • 浮点值(允许两者minmax小数分隔符):
    e
  • 货币值(即最多两位小数):
    E
  • 十六进制值:
    <input>

纯JavaScript

实际上并不需要jQuery,你也可以用纯JavaScript做同样的事情.请参阅此答案在JSFiddle上自行尝试.

HTML 5

HTML 5有一个原生解决方案inputFilter(参见规范),但请注意浏览器支持有所不同:

  • 大多数浏览器仅在提交表单时验证输入,而不是在输入时验证.
  • 大多数移动浏览器不支持inputFilter,<input type="number">step属性.
  • Chrome(版本71.0.3578.98)仍然允许用户输入字符minmax进入字段.另见这个问题.
  • Firefox(版本64.0)和Edge(EdgeHTML版本17.17134)仍然允许用户在该字段中输入任何文本.

在w3schools.com上亲自尝试一下.

更复杂的验证选项

如果你想做一些其他验证的点点滴滴,这可能很方便:

  • 我真的不同意这个答案:使用密钥代码真是太冒险了,因为你无法确定键盘布局是什么.例如,在法语键盘上,用户必须按shift才能键入数字.所以这段代码根本不起作用.所以请去验证,而不是这个密码黑客. (136认同)
  • 谢谢!event.keyCode == 46 || event.keyCode == 8 ||**event.keyCode == 190**如果你想要小数 (44认同)
  • 噢,刚刚从我们的测试人员那里找到了一个问题.您必须阻止用户按住shift并按下数字键,否则输入将允许!@#$%^&*() (21认同)
  • 添加keycode 37和39以允许txt框中的左箭头和右箭头导航,例如:if(event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39) (8认同)
  • 确认了转变+错误.此外,ALT +数字键盘允许几乎任何东西(即Alt + 321 = A,Alt + 322 = B等...).服务器端验证的另一种情况. (6认同)
  • http://www.texotela.co.uk/code/jquery/numeric/这个适合我:)谢谢 (4认同)
  • @Nipzz我遇到Macs的唯一问题是让⌘A在Mac上工作,我不得不改变(event.keyCode == 65 && event.ctrlKey === true)to(event.keyCode == 65 &&(event) .ctrlKey === true || event.metaKey === true)) (3认同)
  • 我同意@MiniQuark关于azerty键盘的看法.在那些键盘上你需要按shift.使用jQuery时,您可以使用`keypress`事件处理程序.例如:`$('#nummer').keypress(function(event){console.log('keypress:'+ event.which); if(!isNumber(event.which)){event.preventDefault(); }}; function isNumber(characterCode){var isNumber = false; if(characterCode> = 48 && characterCode <= 57){isNumber = true; } return isNumber; }` (3认同)

Kel*_*sey 174

这是我使用的功能:

// Numeric only control handler
jQuery.fn.ForceNumericOnly =
function()
{
    return this.each(function()
    {
        $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;
            // allow backspace, tab, delete, enter, arrows, numbers and keypad numbers ONLY
            // home, end, period, and numpad decimal
            return (
                key == 8 || 
                key == 9 ||
                key == 13 ||
                key == 46 ||
                key == 110 ||
                key == 190 ||
                (key >= 35 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行以下操作将其附加到您的控件:

$("#yourTextBoxName").ForceNumericOnly();
Run Code Online (Sandbox Code Playgroud)

  • 此脚本不适用于Shift + 2或3 (4认同)
  • 键"Home","End"也不起作用.这是Peter建议的更好的解决方案:http://www.west-wind.com/weblog/posts/2011/Apr/22/Restricting-Input-in-HTML-Textboxes-to-Numeric-Values (3认同)
  • 我发现这很有用,但我发现了一个令人讨厌的"bug".当我在我的iMac上使用它时,它允许一些字母,如a和e.看起来电脑上的键盘数字是iMac上的字母,Mac键盘与常规数字相同.有谁知道如何使它在mac和pc上都能正常工作? (2认同)
  • @powtac - 所以你可以在多个对象上调用.ForceNumericOnly().例如...... $("input [type ='text']").ForceNumericOnly() (2认同)

Pat*_*her 141

排队:

<input name="number" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')">
Run Code Online (Sandbox Code Playgroud)

不引人注目的风格(使用jQuery):

$('input[name="number"]').keyup(function(e)
                                {
  if (/\D/g.test(this.value))
  {
    // Filter non-digits from input value.
    this.value = this.value.replace(/\D/g, '');
  }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="number">
Run Code Online (Sandbox Code Playgroud)

  • @ mhenry1384这是预期的行为.我发现这是很好的反馈,但如果你不喜欢这样,那么关键的代码方法就是你正在寻找的. (5认同)
  • 即使用户按下左箭头键,这也会将插入符号移动到最后. (2认同)
  • 您可以修改为`/ [^ 0-9] | ^ 0 +(?!$)/ g`以防止前导零序列. (2认同)

小智 101

您可以使用简单的JavaScript正则表达式来测试纯数字字符:

/^[0-9]+$/.test(input);
Run Code Online (Sandbox Code Playgroud)

如果输入是数字,则返回true,否则返回false.

或者对于事件键码,以下简单使用:

     // Allow: backspace, delete, tab, escape, enter, ctrl+A and .
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
         // Allow: Ctrl+A
        (e.keyCode == 65 && e.ctrlKey === true) || 
         // Allow: home, end, left, right
        (e.keyCode >= 35 && e.keyCode <= 39)) {
             // let it happen, don't do anything
             return;
    }

    var charValue = String.fromCharCode(e.keyCode)
        , valid = /^[0-9]+$/.test(charValue);

    if (!valid) {
        e.preventDefault();
    }
Run Code Online (Sandbox Code Playgroud)

  • 有关此方法的实现,请参阅我的答案. (11认同)

Ham*_*Far 81

你可以使用像这样的输入事件:

$(document).on("input", ".numeric", function() {
    this.value = this.value.replace(/\D/g,'');
});
Run Code Online (Sandbox Code Playgroud)

但是,这个代码特权是什么?

  • 它适用于移动浏览器(keydown和keyCode有问题).
  • 它也适用于AJAX生成的内容,因为我们正在使用"on".
  • 比keydown更好的性能,例如在paste事件上.

  • 我觉得这是一个比接受的答案更强大(更简单)的解决方案. (5认同)

Rid*_*ous 50

简短而甜蜜 - 即使在30多个答案后也不会引起太多关注;)

  $('#number_only').bind('keyup paste', function(){
        this.value = this.value.replace(/[^0-9]/g, '');
  });
Run Code Online (Sandbox Code Playgroud)

  • 我会通过输入替换keyup,否则你可以按下一个字母,然后单击以将焦点从文本框中取出,它将文本保留原样.输入确保不会发生这种情况 (5认同)
  • 感谢您的正则表达式 - 但这是一个更好的事件处理程序: $('#number_only').on('input propertychange', function(){ this.value = this.value.replace(/[^0-9] /G, ''); }); (3认同)
  • 仅供参考-这个问题并没有要求,但这不允许小数点(例如12.75)。绑定“输入”而不是“键盘”可以使UX更加流畅,而不是瞬间看到他们的角色,然后将其删除。 (2认同)

Amr*_*rhy 43

使用JavaScript函数isNaN,

if (isNaN($('#inputid').val()))
Run Code Online (Sandbox Code Playgroud)

if(isNaN(document.getElementById('inputid').val()))

if (isNaN(document.getElementById('inputid').value))
Run Code Online (Sandbox Code Playgroud)

更新: 这里有一篇很好的文章谈论它但使用jQuery:将HTML文本框中的输入限制为数字值

  • 好吧......"不使用JQuery",除了您使用JQuery的示例部分... (40认同)
  • [因为JavaScript类型强制,单独使用`isNaN`是一个坏主意.](http://stackoverflow.com/questions/5663141/simple-number-validation-javascript-jquery/5663507#5663507) (12认同)
  • +1因为这是一个真正的踢屁股!只有数字方式!;-) (3认同)

Iva*_*var 27

$(document).ready(function() {
    $("#txtboxToFilter").keydown(function(event) {
        // Allow only backspace and delete
        if ( event.keyCode == 46 || event.keyCode == 8 ) {
            // let it happen, don't do anything
        }
        else {
            // Ensure that it is a number and stop the keypress
            if (event.keyCode < 48 || event.keyCode > 57 ) {
                event.preventDefault(); 
            }   
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

资料来源:http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values

  • 哇,空的"如果"块和魔法数字都!我只是呕吐在嘴里.:D但是严重的是,为什么当你可以将输入与正则表达式匹配时,为什么会遇到这个问题?/.[+] + $ /?'8'代表什么? (6认同)
  • 例如,尝试按Shift + 8 - 您的验证将允许*进入 (4认同)

小智 27

我在内部常见的js文件中使用它.我只是将类添加到需要此行为的任何输入.

$(".numericOnly").keypress(function (e) {
    if (String.fromCharCode(e.keyCode).match(/[^0-9]/g)) return false;
});
Run Code Online (Sandbox Code Playgroud)

  • 漂亮、优雅和有用的代码!谢谢。但是您必须添加 keyup 和 keydown 事件。 (2认同)

Sum*_*ain 25

对我来说更简单的是

jQuery('.plan_eff').keyup(function () {     
  this.value = this.value.replace(/[^1-9\.]/g,'');
});
Run Code Online (Sandbox Code Playgroud)

  • 只需要确保你使用`this.value.replace(/ [^ 0-9 \.]/g,'');`来包含OP的0-9要求 (7认同)

gue*_*est 22

为什么这么复杂?你甚至不需要jQuery,因为有一个HTML5模式属性:

<input type="text" pattern="[0-9]*">
Run Code Online (Sandbox Code Playgroud)

很酷的是,它在移动设备上显示了一个数字键盘,这比使用jQuery更好.

  • 这应该有更多的选票。如果有的话,您还可以为非html5浏览器添加一个后备正则表达式-但无论如何都应在服务器端处理数据验证。 (2认同)
  • !!!仅在提交时有效! (2认同)

Gan*_*abu 18

您可以使用这个非常简单的解决方案来做同样的事情

$("input.numbers").keypress(function(event) {
  return /\d/.test(String.fromCharCode(event.keyCode));
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numbers" name="field_name" />
Run Code Online (Sandbox Code Playgroud)

我提到了这个解决方案的链接.它完美地工作!


vic*_*sys 14

HTML5中的pattern属性指定了一个正则表达式,该元素的值将被检查.

  <input  type="text" pattern="[0-9]{1,3}" value="" />
Run Code Online (Sandbox Code Playgroud)

注意:pattern属性使用以下输入类型:text,search,url,tel,email和password.

  • [0-9]可以用任何正则表达式条件替换.

  • {1,3}表示最小值为1,最多可输入3位数.


Vit*_*nko 13

您可以尝试输入HTML5 号码:

<input type="number" value="0" min="0"> 
Run Code Online (Sandbox Code Playgroud)

对于不兼容的浏览器,有ModernizrWebforms2后备.


Adr*_*ian 11

使用jQuery.validate非常简单

$(document).ready(function() {
    $("#formID").validate({
        rules: {
            field_name: {
                numericOnly:true
            }
        }
    });
});

$.validator.addMethod('numericOnly', function (value) {
       return /^[0-9]+$/.test(value);
}, 'Please only enter numeric values (0-9)');
Run Code Online (Sandbox Code Playgroud)


小智 10

如果有一个平滑的 OneLiner:

<input type="text" onkeypress="return /[0-9]/i.test(event.key)" >
Run Code Online (Sandbox Code Playgroud)


kar*_*m79 8

您可以使用此JavaScript函数:

function maskInput(e) {
    //check if we have "e" or "window.event" and use them as "event"
        //Firefox doesn't have window.event 
    var event = e || window.event 

    var key_code = event.keyCode;
    var oElement = e ? e.target : window.event.srcElement;
    if (!event.shiftKey && !event.ctrlKey && !event.altKey) {
        if ((key_code > 47 && key_code < 58) ||
            (key_code > 95 && key_code < 106)) {

            if (key_code > 95)
                 key_code -= (95-47);
            oElement.value = oElement.value;
        } else if(key_code == 8) {
            oElement.value = oElement.value;
        } else if(key_code != 9) {
            event.returnValue = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以将它绑定到你的文本框,如下所示:

$(document).ready(function() {
    $('#myTextbox').keydown(maskInput);
});
Run Code Online (Sandbox Code Playgroud)

我在生产中使用上面的,它完美地工作,它是跨浏览器.此外,它不依赖于jQuery,因此您可以使用内联JavaScript将其绑定到文本框:

<input type="text" name="aNumberField" onkeydown="javascript:maskInput()"/>
Run Code Online (Sandbox Code Playgroud)


小智 8

function suppressNonNumericInput(event){

    if( !(event.keyCode == 8                                // backspace
        || event.keyCode == 46                              // delete
        || (event.keyCode >= 35 && event.keyCode <= 40)     // arrow keys/home/end
        || (event.keyCode >= 48 && event.keyCode <= 57)     // numbers on keyboard
        || (event.keyCode >= 96 && event.keyCode <= 105))   // number on keypad
        ) {
            event.preventDefault();     // Prevent character input
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 很好的解决方案。还添加 keyCode 9 以允许 TAB (2认同)

Vin*_*ent 8

我找到了一个非常好的简单解决方案,它不会像其他解决方案那样阻止用户选择文本或复制粘贴.jQuery风格:)

$("input.inputPhone").keyup(function() {
    var jThis=$(this);
    var notNumber=new RegExp("[^0-9]","g");
    var val=jThis.val();

    //Math before replacing to prevent losing keyboard selection 
    if(val.match(notNumber))
    { jThis.val(val.replace(notNumber,"")); }
}).keyup(); //Trigger on page load to sanitize values set by server
Run Code Online (Sandbox Code Playgroud)


Asi*_*sif 7

我认为这对每个人都有帮助

  $('input.valid-number').bind('keypress', function(e) { 
return ( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) ? false : true ;
  })
Run Code Online (Sandbox Code Playgroud)


小智 7

在 html 代码中尝试它自己就像 onkeypress 和 onpast

<input type="text" onkeypress="return event.charCode >= 48 && event.charCode <= 57" onpaste="return false">
Run Code Online (Sandbox Code Playgroud)


jam*_*ar2 6

我根据@ user261922上面的帖子写了我的,略微修改了所以你可以选择all,tab并且可以在同一页面上处理多个"仅限数字"字段.

var prevKey = -1, prevControl = '';
$(document).ready(function () {
    $(".OnlyNumbers").keydown(function (event) {
        if (!(event.keyCode == 8                                // backspace
            || event.keyCode == 9                               // tab
            || event.keyCode == 17                              // ctrl
            || event.keyCode == 46                              // delete
            || (event.keyCode >= 35 && event.keyCode <= 40)     // arrow keys/home/end
            || (event.keyCode >= 48 && event.keyCode <= 57)     // numbers on keyboard
            || (event.keyCode >= 96 && event.keyCode <= 105)    // number on keypad
            || (event.keyCode == 65 && prevKey == 17 && prevControl == event.currentTarget.id))          // ctrl + a, on same control
        ) {
            event.preventDefault();     // Prevent character input
        }
        else {
            prevKey = event.keyCode;
            prevControl = event.currentTarget.id;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)


小智 6

这是我前一段时间创建的快速解决方案.你可以在我的文章中阅读更多相关信息:

http://ajax911.com/numbers-numeric-field-jquery/

$("#textfield").bind("keyup paste", function(){
    setTimeout(jQuery.proxy(function() {
        this.val(this.val().replace(/[^0-9]/g, ''));
    }, $(this)), 0);
});
Run Code Online (Sandbox Code Playgroud)


Rea*_*lar 6

这是一个使用jQuery UI Widget工厂的答案.您可以轻松自定义允许的字符.

$('input').numberOnly({
    valid: "0123456789+-.$,"
});
Run Code Online (Sandbox Code Playgroud)

这将允许数字,数字符号和美元金额.

$.widget('themex.numberOnly', {
    options: {
        valid : "0123456789",
        allow : [46,8,9,27,13,35,39],
        ctrl : [65],
        alt : [],
        extra : []
    },
    _create: function() {
        var self = this;

        self.element.keypress(function(event){
            if(self._codeInArray(event,self.options.allow) || self._codeInArray(event,self.options.extra))
            {
                return;
            }
            if(event.ctrlKey && self._codeInArray(event,self.options.ctrl))
            {
                return;
            }
            if(event.altKey && self._codeInArray(event,self.options.alt))
            {
                return;
            }
            if(!event.shiftKey && !event.altKey && !event.ctrlKey)
            {
                if(self.options.valid.indexOf(String.fromCharCode(event.keyCode)) != -1)
                {
                    return;
                }
            }
            event.preventDefault(); 
        });
    },

    _codeInArray : function(event,codes) {
        for(code in codes)
        {
            if(event.keyCode == codes[code])
            {
                return true;
            }
        }
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)


Jon*_*han 6

这似乎牢不可破.

// Prevent NULL input and replace text.
$(document).on('change', 'input[type="number"]', function (event) {
    this.value = this.value.replace(/[^0-9\.]+/g, '');
    if (this.value < 1) this.value = 0;
});

// Block non-numeric chars.
$(document).on('keypress', 'input[type="number"]', function (event) {
    return (((event.which > 47) && (event.which < 58)) || (event.which == 13));
});
Run Code Online (Sandbox Code Playgroud)


Rez*_*ngi 6

这是两种不同的方法:

  1. 允许带小数点的数值
  2. 允许没有小数点的数值

方法 1:

$("#approach1").on("keypress keyup blur",function (e) {
   $(this).val($(this).val().replace(/[^0-9\.]/g,''));
      if ((e.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
          event.preventDefault();
      }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h2>Numeric with decimal point</h2><br/>
<span>Enter Amount</span>
<input type="text" name="amount" id="approach1">
Run Code Online (Sandbox Code Playgroud)

方法 2:

$("#approach2").on("keypress keyup blur",function (event) {    
   $(this).val($(this).val().replace(/[^\d].+/, ""));
    if ((event.which < 48 || event.which > 57)) {
        event.preventDefault();
    }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h2>Numeric without decimal point</h2><br/>
<span>Enter Amount</span>
<input type="text" name="amount" id="approach2">
Run Code Online (Sandbox Code Playgroud)


Cop*_*ill 5

需要确保数字小键盘和 Tab 键也能正常工作

 // Allow only backspace and delete
            if (event.keyCode == 46 || event.keyCode == 8  || event.keyCode == 9) {
                // let it happen, don't do anything
            }
            else {
                // Ensure that it is a number and stop the keypress
                if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {

                }
                else {
                    event.preventDefault();
                }
            }
Run Code Online (Sandbox Code Playgroud)


小智 5

我想帮助一点,我制作了我的版本,onlyNumbers功能......

function onlyNumbers(e){
    var keynum;
    var keychar;

    if(window.event){  //IE
        keynum = e.keyCode;
    }
    if(e.which){ //Netscape/Firefox/Opera
        keynum = e.which;
    }
    if((keynum == 8 || keynum == 9 || keynum == 46 || (keynum >= 35 && keynum <= 40) ||
       (event.keyCode >= 96 && event.keyCode <= 105)))return true;

    if(keynum == 110 || keynum == 190){
        var checkdot=document.getElementById('price').value;
        var i=0;
        for(i=0;i<checkdot.length;i++){
            if(checkdot[i]=='.')return false;
        }
        if(checkdot.length==0)document.getElementById('price').value='0';
        return true;
    }
    keychar = String.fromCharCode(keynum);

    return !isNaN(keychar);
}
Run Code Online (Sandbox Code Playgroud)

只需添加输入标签"... input ... id ="price"onkeydown ="return onlyNumbers(event)"..."就完成了;)


SoN*_*9ne 5

这就是我最近写信来实现这一目标的原因。我知道这已经得到了回答,但我将其留作以后使用。

此方法只允许0-9键盘和小键盘,退格键,制表符,左右箭头(正常表单操作)

$(".numbersonly-format").keydown(function (event) {
    // Prevent shift key since its not needed
    if (event.shiftKey == true) {
        event.preventDefault();
    }
    // Allow Only: keyboard 0-9, numpad 0-9, backspace, tab, left arrow, right arrow, delete
    if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46) {
        // Allow normal operation
    } else {
        // Prevent the rest
        event.preventDefault();
    }
});
Run Code Online (Sandbox Code Playgroud)


小智 5

你想要允许标签:

$("#txtboxToFilter").keydown(function(event) {
    // Allow only backspace and delete
    if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 ) {
        // let it happen, don't do anything
    }
    else {
        // Ensure that it is a number and stop the keypress
        if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
            event.preventDefault(); 
        }   
    }
});
Run Code Online (Sandbox Code Playgroud)


Ped*_*res 5

我也想回答:)

    $('.justNum').keydown(function(event){
        var kc, num, rt = false;
        kc = event.keyCode;
        if(kc == 8 || ((kc > 47 && kc < 58) || (kc > 95 && kc < 106))) rt = true;
        return rt;
    })
    .bind('blur', function(){
        num = parseInt($(this).val());
        num = isNaN(num) ? '' : num;
        if(num && num < 0) num = num*-1;
        $(this).val(num);
    });
Run Code Online (Sandbox Code Playgroud)

就是这样......只是数字.:)它几乎可以与'模糊'一起工作,但......


Pra*_*ara 5

检查输入值是否为数字的简单方法是:

var checknumber = $('#textbox_id').val();

    if(jQuery.isNumeric(checknumber) == false){
        alert('Please enter numeric value');
        $('#special_price').focus();
        return;
    }
Run Code Online (Sandbox Code Playgroud)


Jit*_*mar 5

只需要在Jquery中应用此方法,您就可以将文本框验证为仅接受数字.

function IsNumberKeyWithoutDecimal(element) {    
var value = $(element).val();
var regExp = "^\\d+$";
return value.match(regExp); 
}
Run Code Online (Sandbox Code Playgroud)

尝试这种解决方案在这里


kkk*_*kkk 5

您可以尝试输入HTML5号码:

<input type="number" placeholder="enter the number" min="0" max="9">
Run Code Online (Sandbox Code Playgroud)

此输入标记元素现在仅在0到9之间取值,因为min属性设置为0,max属性设置为9.

有关访问http://www.w3schools.com/html/html_form_input_types.asp的更多信息

  • 是的但它适用于现代浏览器 (2认同)

小智 5

您可以使用以下代码。

<input type="text" onkeypress="return event.charCode &gt;= 48 &amp;&amp; event.charCode &lt;= 57">
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

1483152 次

最近记录:

6 年 前