使用Jquery验证输入

时间:2014-05-08 06:08:50

标签: javascript jquery

我正在尝试执行类似下面的代码,但到目前为止还没有成功。

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?');
        }
    }
});

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

4 个答案:

答案 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();
    }
});

Fiddle

答案 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