避免键入一些特殊字符

avoid to type some special characters

本文关键字:特殊字符      更新时间:2023-09-26

我有一个用于证明用户名的文本框。但当他们试图打字或粘贴单词(以及特殊字符)时,我想限制特殊字符。我怎么能用js做到这一点。已经写了一段代码,但只有我可以在打字时限制那里的特殊字符,但当我在文本框上粘贴一些单词时,无法限制这些字符。我的代码是这样的:

<input type="text" name="bus_uname" id="bus_uname" class="reg-line-input"
  value="<?php echo ($back_uname!='')?$back_uname:'Business Username';?>"
  onblur="if(this.value=='') this.value='Business Username'"
  onFocus="if(this.value=='Business Username') this.value='';"
  onkeypress="return usernameonly(event, false)" />

和js

function usernameonly(e, decimal) {
    var key;
    var keychar;
    if (window.event) {
       key = window.event.keyCode;
    }
    else if (e) {
       key = e.which;
    }
    else {
       return true;
    }
    keychar = String.fromCharCode(key);
    if ((key==null) || (key==0) || (key==8) ||  (key==9) || (key==13) || (key==27) ) {
       return true;
    }
    else if ((("!@#$%^&*()_+-=?/.><,';:").indexOf(keychar) > -1)) {
       return false;
    }
    //else
    //   return false;
}

请帮助解决此问题。

<input type="text" name="bus_uname" id="bus_uname" class="reg-line-input" value="<?php echo ($back_uname!='')?$back_uname:'Business Username';?>" onblur="if(this.value=='') this.value='Business Username'" onFocus="if(this.value=='Business Username') this.value='';" onkeypress="return usernameonly(event, false)" onpaste="return false" />

我添加了onpaste="return false",这样你的用户就无法粘贴,他们必须键入用户名。