文本框只允许a-z 0-9和。 ,+ - 和$

时间:2016-02-19 20:04:14

标签: javascript asp.net vb.net internet-explorer

我正在努力实现这一目标。我有一个文本框 在这个文本框中我只允许这些charcode。

abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
and only these symbols +-.,$

我只使用纯javascript和onkeydown 但是使用onkeydown我无法检测到按键。例如,当用户按下shift + 5时...我得到键码16和键码53,其中我只查找键码37 。我正在使用IE11测试这个

这就是我所拥有的

 <script language="JavaScript" type="text/javascript">
    document.forms[0].addEventListener("input", function (e) {
      var input = this.children[0];
      var not = input.value.match(/[^a-zA-Z0-9.+,$-]+/g);
      if (not) {
          not.forEach(function (text) {
              input.value = input.value.replace(text, "")
          })
      }
  })
</script> 
'this is a dynamic textbox
Dim txtDesc As New TextBox
txtDesc.Attributes.Add("onkeydown", "return isAllowed(event)")

以上代码仅适用于Chrome和Firefox。

我需要做些什么才能在IE11上获得onkeypress的效果? 我在IE11上试过onkeypress并且没有开火。

如果可能,我的解决方案必须适用于所有Chrome,FF和IE11。

谢谢

enter image description here

1 个答案:

答案 0 :(得分:3)

尝试RegExp [a-zA-Z0-9.+,$-]+

&#13;
&#13;
document.forms["form"].addEventListener("input", function(e) {
  var input = this.querySelector("input[name=input]");
  var not = input.value.match(/[^a-zA-Z0-9.+,$-]+/g);
  if (not) {
    not.forEach(function(text) {
      input.value = input.value.replace(text, "")
    })
  }
})
&#13;
<form name="form">
  <input name="input" type="text" pattern="[a-zA-Z0-9.+,$-]+" />
  <input type="submit" />
</form>
&#13;
&#13;
&#13;