我正在努力实现这一目标。我有一个文本框 在这个文本框中我只允许这些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。
谢谢
答案 0 :(得分:3)
尝试RegExp
[a-zA-Z0-9.+,$-]+
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;