如何使用Javascript过滤和忽略输入字段上的按键?

时间:2014-04-15 22:11:42

标签: javascript html regex dojo

当达到长度限制时,我需要停止接受HTML表单输入字段上的输入(击键)。在直接HTML中,我可以使用maxlength="3"或任何长度来执行此操作,但如果可能的话,我想通过Javascript处理它,以便我可以与下一个要求一起完成。

我还需要过滤输入,这样如果字段是数字,则只能键入数字,如果有掩码或正则表达式,则任何输入都符合掩码/正则表达式。

有没有“标准”的方法来实现这一点,Javascript,特别是在Dojo 1.9中? (我知道每个人都使用JQuery,但我们使用Dojo,因为。)

3 个答案:

答案 0 :(得分:1)

对于dojo,如果你需要任何类型的验证,我会使用ValidationTextBox,它将“maxLength”作为属性并允许各种漂亮的验证方案。 ValidationTextBox的引用如下:

http://dojotoolkit.org/reference-guide/1.9/dijit/form/ValidationTextBox.html

答案 1 :(得分:0)

我使用pure Javascript因为我不熟悉Dojo,但是这些事件监听器很可能会被Dojo清理。

var input = document.getElementsByTagName('input')[0],
    error = document.getElementById('error');

input.addEventListener('keypress', function(e) {
    if(e.which < 48 || e.which > 57) {
        e.preventDefault();
        error.innerHTML = 'Must be a digit';
    } else if(e.target.value.length >= 3) {
        e.preventDefault();
        error.innerHTML = 'Cannot be more than 3 digits';        
    } else {
        error.innerHTML = '';
    }
});

我们听一个按键然后,为了确保它是一个数字,我们寻求按下的键在48-57(0-9)之间。如果没有,那么我们阻止按键并显示错误。然后我们检查输入的当前长度。如果太长,则阻止按键并显示错误。否则,它起作用,我们允许事件并清除错误。

答案 2 :(得分:0)

您可能正在寻找:

<input id="text" type="text"/>

$('#text').on('keypress',function(e){
    var numero  = this.value.length;

    console.log(this.value.length);
  if (e.which != 8 && e.which < 48 ||  e.which > 57)
  {
      return false
  }
    else if (numero === 3 && e.which != 8){
     return false //alert user here
    }else{
        return true // allow backspace only (8)
    }
 }
);

DEMO