不允许输入框中的数字

时间:2015-01-26 16:01:11

标签: javascript jquery knockout.js

嗨我有一个接受数字的功能,但是它有一些问题。

1)我希望它接受斜杠,即' /'?

2)在第一个输入上,它出于某种原因接受了字母。

它绑定到淘汰键盘功能。

 <input id="txtboxToFilter" type="text" placeholder="dd/mm/yyyy" maxlength="10" data-bind="value: Observable.birthdate(), valueUpdate: 'keyup', event: { keyup: CheckDate}" />

然后调用此函数。

  function CheckDate(){
    document.getElementById('txtboxToFilter').onkeydown = function(evt) {
      var charCode = (evt.which) ? evt.which : evt.keyCode;
      if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
          return false;

      return true;

    }

  }

任何身体帮助?

1 个答案:

答案 0 :(得分:0)

你当然可以使用正则表达式:

这里也将支持闰年:)

^(?:(?:31(\/)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

JS代码:

document.getElementById('txtboxToFilter').onblur= function(e) {
    alert(validateDate(document.getElementById('txtboxToFilter').value));
    }


 function validateDate(dob) { 
    var re = /^(?:(?:31(\/)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
    return re.test(dob);
} 

小提琴:http://jsfiddle.net/exe0m3ek/

  

注意:我已将事件从keyup更改为blur,如果你只想要   这个关键字...请相应更改。