我正在尝试做的是一个用于输入邮政号码的简单表单字段,它允许输入最多 4 位数字。
看看我的jsfiddle。它工作正常,唯一的问题是,当里面有完整的 4 位数字并且选择了里面的文本时,我在输入数字时无法覆盖它,我必须先点击删除然后插入数字
另一个无关紧要的问题,如何防止用户输入 0(零)作为第一个数字?
我使用了 kundan 的解决方案并(在我看来)添加了一个更好的解决方案来解决零问题:
$(document).ready(function(){
var IsSelect = false;
$('#fld_1').select(function(){
IsSelect = true;
}).keypress(function (event){
if( event.which==8 || event.which==0 || event.which == 27) return true;
if($(this).val().length > 3 && !IsSelect) return false;
if(IsSelect && event.which == 48) return false;
if($(this).val().length == 0 && event.which == 48) return false;
var regex = new RegExp("^[0-9]");
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
IsSelect = false;
});
});
它几乎完美地工作......唯一的问题是当用户在输入框中部分选择文本(例如最后两位数字......而不是他不能从零开始写,但它应该是可能的,因为他正在插入第三个字母而不是开头