输入中只有数字

时间:2013-04-22 22:07:18

标签: javascript jquery

我目前有一个片段,只允许将数字输入到输入中:

$('input').bind('keypress', function(event) { 
    var charCode = event.which;
    var keyChar = String.fromCharCode(charCode); 
    return /[0-9]/.test(keyChar); 
});

jsFiddle: http://jsfiddle.net/wgsPr/

如何调整此值以防止输入大于500的数字?

例如,如果用户键入50,然后键入1,则不会显示1.但是,如果用户输入0之后,它将显示500。如果用户尝试键入968它不会显示8,则只会显示96

希望这是有道理的。

3 个答案:

答案 0 :(得分:0)

你真的不应该使用这样的方法。这样做效果更好:

<input type="number" min="0" max="500" />

但是,如果您坚持,请使用现有代码并将return行替换为:

return /\d/.test(keyChar) && this.value <= 500;

答案 1 :(得分:0)

if ($(this).val() > 500) {
    $(this).val($(this).val().substr(0, $(this).val().length - 1));
    return false;
}

我继续尝试自己解决这个问题。基本上,它检查值并删除最后一个字符,使其整个输入值大于500。如果有任何修改,请告诉我。

答案 2 :(得分:0)

该行将是

return /\d/.test(keyChar) && parseInt(this.value+keyChar, 10) <= 500;

Demo

但是,我仍建议不要挂钩并阻止keypress个事件的默认情况 - 转到keyupchange个事件,如果输入的值无效,则会显示错误消息。或者使用带有最小和最大属性的HTML5 <input type="number" />