我正在尝试执行类似下面的代码,但到目前为止还没有成功。
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57)) return false;
return true;
} // restrict numerical values only
上面的代码只允许使用数字字符,当用户将任何其他键推出数字字符时,它不会出现在文本框中。
这正是我想要的,但场景不同,我不希望用户输入零(0)作为他们的第一个角色。
e.g。 0909错了,而是909
到目前为止我能够实现这一目标
$(".input-xlarge").keyup(function () {
var textInField = this.value;
if (textInField.length == 1) {
if (textInField == 0) {
showError('error?');
}
}
});
但是应该向用户显示一条消息,输入应该像第一个代码一样被忽略。
答案 0 :(得分:3)
查看小提琴,这会“阻止”文本框,仅通过js进行有效输入。
HTML:
<input id='numeric' type='text'/>
JS:
$('#numeric').keydown(function(e){
if(e.keyCode == 8) // allow backspace - add more chars here
{
return;
}
else if(e.keyCode < 48 || e.keyCode > 57 || (e.keyCode == 48 && $(this).val() == '')) // non numeric + beginning zero
{
e.preventDefault();
}
});
答案 1 :(得分:1)
这样可行,
$(".input-xlarge").keyup(function (evt) {
var textInField = this.value;
if (textInField.length == 1) {
if (textInField == 0) {
alert('number should not start with zero');
$(evt.target).val("")
}
}
});
答案 2 :(得分:1)
试试这段代码:
$(".input-xlarge").keyup(function (event) {
var textInField = this.value;
if (textInField.substr(0, 1) == '0') {
event.preventDefault();
alert("should not start with zero');
}
});
通过这样做,每当您的用户输入0
作为第一个字母时,它就不会显示,并会提示错误消息。
答案 3 :(得分:1)
$( ".input-xlarge" ).keyup(function(e) {
var textInField = this.value;
if (textInField.length == 1){
if (this.value.length == 0 && e.which == 48 ){
alert('cannot start with zero')
return false;
}
}
});
参考此jsfiddle