使用jquery验证数字

时间:2011-10-04 21:12:34

标签: javascript jquery

如何编写输入只接受数字的jquery代码。如果是除了数字类型之外的东西不允许(意味着如果用户键入单词类型停止,字段只接受数字没有单词)。怎么没有使用插件?

<input type="text" name="passport_number" class="number">

6 个答案:

答案 0 :(得分:1)

以下功能允许使用数字以及删除和退格键。

    function numbersOnly() {

        var key_code = window.event.keyCode;
        var oElement = window.event.srcElement;

        if (!window.event.shiftKey && !window.event.ctrlKey && !window.event.altKey) {

            if ((key_code > 47 && key_code < 58) || (key_code > 95 && key_code < 106)) {
                if (key_code > 95) {
                    oElement.value = oElement.value;
                }
            }
            else if (key_code == 8) {
                oElement.value = oElement.value;
            }
            else if (key_code == 37 || key_code == 39 || key_code == 46) {
            }
            else if (key_code != 9) {
                event.returnValue = false;
            }
        } else {
            event.returnValue = false;
        }
    }

答案 1 :(得分:1)

我最近写了这样的东西:

var oldnumber=0;
var $ctrl=$('input[name=passport_number]');
$ctrl.focusout(function () {
    if (isFinite($ctrl.attr('value'))) {
        oldnumber=$ctrl.val();
    } else {
        $ctrl.attr('value',oldnumber);
    }
});

基本上,如果您输入一个数字,它会记住该数字。如果您编写的数字不是数字,则该字段将重新设置为其先前的值。

如果你问我,我的解决方案很短,非常干净。它检查它是否是一个数字,如果没有,它会拒绝你的进入。

希望有所帮助:)

答案 2 :(得分:1)

快速而肮脏:

$('input').bind('keyup change',function(){
    var v = parseInt($(this).val());
    $(this).val(isNaN(v)?'':v);
});

演示:
http://jsfiddle.net/Q9zrw/1/


不同的方法:

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

答案 3 :(得分:0)

对于护照号码等固定宽度数据,请使用masked-input plugin。对于常规数字输入,请使用numeric plugin。我使用过它们并且它们工作得非常好。对于像这样的通用任务,很可能有人已经创建了一个插件。

BTW,像这样的击键级UI编程比最初看起来更棘手。您需要处理字符键,左箭头和右箭头,退格键和删除,而不是中断选项卡,输入和Control-A。理想情况下,您还应该处理用户选择了一系列文本进行删除或替换的情况。

答案 4 :(得分:0)

我认为这是一种更好的方法,因为它不会将任何内容转移到输入中。

    $('input').bind('keypress',function(){
        if(isNaN(String.fromCharCode(window.event.keyCode))) window.event.returnValue = false;
    });

希望有所帮助:)

答案 5 :(得分:-1)

尝试:

var passport_field = $(....)
if (passport_field.val() != parseInt(passport_field.val()))
  return false;