Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript过滤和忽略输入字段上的按键?_Javascript_Html_Regex_Dojo - Fatal编程技术网

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

如何使用Javascript过滤和忽略输入字段上的按键?,javascript,html,regex,dojo,Javascript,Html,Regex,Dojo,当达到长度限制时,我需要停止接受HTML表单输入字段上的输入(击键)。在直接的HTML中,我可以使用maxlength=“3”或任何长度,但如果可能的话,我想通过Javascript处理它,这样我就可以与下一个需求一起完成 我还需要过滤输入,以便如果字段是数字,则只能键入数字,如果有掩码或正则表达式,则任何输入都符合掩码/正则表达式 在Javascript中,特别是在Dojo1.9中,是否有一种“标准”的方法来实现这一点?(我知道每个人都使用JQuery,但我们使用Dojo是因为。)我之所以使用

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

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

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

我之所以使用,是因为我不熟悉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 = '';
    }
});
var input=document.getElementsByTagName('input')[0],
error=document.getElementById('error');
input.addEventListener('keypress',函数(e){
如果(e.哪个<48 | | e.哪个>57){
e、 预防默认值();
error.innerHTML='必须是数字';
}否则如果(e.target.value.length>=3){
e、 预防默认值();
error.innerHTML='不能超过3位';
}否则{
error.innerHTML='';
}
});

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

您可能正在查找以下内容:

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

$('#text')。在('keypress',函数(e)上{
var numero=this.value.length;
console.log(this.value.length);
如果(e.which!=8&&e.which<48 | e.which>57)
{
返回错误
}
else if(numero==3&&e.which!=8){
返回false//alert user here
}否则{
返回true//仅允许退格(8)
}
}
);

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


这可能就是您要找的?这看起来是涉及Dojo的最佳解决方案。谢谢