如何编写输入只接受数字的jquery代码。如果是除了数字类型之外的东西不允许(意味着如果用户键入单词类型停止,字段只接受数字没有单词)。怎么没有使用插件?
<input type="text" name="passport_number" class="number">
答案 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;