文本字段限制除(+ -0-9%)以外

时间:2018-04-24 21:25:49

标签: javascript angularjs

有一个文本字段可以接受以下内容的场景, 10,+10,-10,+10.00,-10.00,+10.00%,-10.00%

我可以使用RegEx pattern="[-+]?[0-9]+(\.[0-9]{0,4})?%?"检查模式。

但要求是限制用户在字段中输入错误的字符,而不是抛出错误。

Angular版本 - 1.6

1 个答案:

答案 0 :(得分:0)

我自己只是轻松地使用,

<input type="number" min="-10" max="10" />

然后向用户表明他正在此字段中插入百分比。适用于移动用户。

否则我可能会构建某种状态机并为不同的解决方案构建json结构。然后在regexp上运行它。

document.getElementById('input').addEventListener('keydown',function(event){
  event.preventDefault();
  var stateTree = {
   0 : ['-','+','[0-9]'],
   ... //  basicly declare here possible regexp's per length
   5 : ['[+|-]10\.0']  // could be doing quiet specific one's
  };

  var text = this.value +''+ event.key;
  var array = stateTree[text.length];
  array.map( function(item){
    const match = new RegExp(item, 'g');
    if( text.match(match) ){ this.value = text }
  });

})