使用Jquery验证输入

Validate input with Jquery

本文关键字:输入 验证 Jquery 使用      更新时间:2023-09-26

我正在尝试做下面这样的代码,但到目前为止还没有成功。

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(作为他们的第一个字符。

例如0909错误,而不是909

到目前为止,我已经能够实现

$(".input-xlarge").keyup(function () {
    var textInField = this.value;
    if (textInField.length == 1) {
        if (textInField == 0) {
            showError('error?');
        }
    }
});

但是应该向用户显示一条消息,应该像第一个代码一样忽略输入。

看看fiddle,它"阻止"了文本框,只允许通过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();
    }
});

Fiddle

这会起作用,

$(".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("")
        }
    }
});
$( ".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

试试这个代码:

$(".input-xlarge").keyup(function (event) {
    var textInField = this.value;
    if (textInField.substr(0, 1) == '0') {
        event.preventDefault();
        alert("should not start with zero');
    }
});

通过这样做,每当用户输入0作为第一个字母时,它就不会显示,并且会发出错误消息。