为什么input禁止特殊字符输入我这么做没有效果

function showKeyPress(evt) {
    evt = (evt) ? evt : window.event
    return checkSpecificKey(evt.keyCode);
}

function checkSpecificKey(keyCode) {
    var specialKey = "[`~!#$^&*()=|{}':;',\\[\\].<>/?~!#¥……&*()——|{}【】‘;:”“'。,、?]‘’";//Specific Key list  
    var realkey = String.fromCharCode(keyCode);
    var flg = false;
    flg = (specialKey.indexOf(realkey) >= 0);
    if (flg) {
        alert('请勿输入特殊字符: ' + realkey);  
        return false;
    }
    return true;
}
document.onkeypress = showKeyPress;

dom结构:

  <input class="form-control" type="text" id="activityName" name="activityName" onkeypress="showKeyPress()" >
阅读 4.9k
4 个回答
<script type="text/javascript">
var specialKey = "「」[`~!#$^&*()=|{}':;',\\[\\].<>/?~!#¥……&*()——|{}【】‘;:”“'。,、?]‘’". split('');
function keyup() {
     var value = document.getElementById('activityName').value;
     console.log(value)
     for (var i = 0; i < specialKey.length; i++) {
         if (value.indexOf(specialKey[i]) > -1) {
             document.getElementById('activityName').value = value.replace(specialKey[i], '');
             break;
         }
     }
}
</script>
<input class="form-control" type="text" id="activityName" name="activityName" onkeyup="keyup()" >

图片描述

我觉得是应该绑定为onchange事件,输入法下的事件触发很诡异。。

evt.keyCode 这个返回的是个数值,不是具体的键盘上显示的内容
也就是说,当你点击键盘A的时候返回的是个固定的值65
相关键盘keyCode 对应值如下

 A==65
 B==66
 C==67
 D==68

为什么你不只匹配合法的字符,而要去排除特殊字符? 很明显合法字符的范围更小吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题