我想在此代码中阻止特殊字符。 换句话说,用户只能输入字母数字值并使用退格键进行删除。
错误:当我在if条件下编写code==8
时,它会允许所有特殊字符。
<html>
<head>
<title>practice</title>
<script type="text/javascript">
function noSpecialChar(e){
if (e.keyCode)
code = e.keyCode;
else if (e.which)
code = e.which;
//code==8 => backspace
//(code>=65 && code<=90) => alphabets
//(code>=48 && code<=57) => numeric
if((code>=65 && code<=90)||(code>=48&&code<=57)||(code==8)){
return true;
}else{
return false;
}
}
</script>
</head>
<body>
<input type="text" name="txtName" id="txtName" onkeydown=" return noSpecialChar(window.event);"/>
</body>
</html>
答案 0 :(得分:1)
正确进行此类过滤非常棘手。以下示例使用“JavaScript:The Definitive Guide”中的代码,“17.8 Text Events”部分。如果您想使用它,请从O'Reilly服务器下载代码,而不是在代码中直接引用它。该代码使用whenReady.js例程,您可以从https://github.com/kukawski/whenReady/blob/master/whenReady.js
下载该例程<!doctype html>
<script src="whenReady.js"></script>
<script src=
"http://examples.oreilly.com/9780596805531/examples/17.06.InputFilter.js">
</script>
<label for="txtName">Text:</label><input id="txtName" type="text"
data-allowed-chars=
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
data-messageid="input-error">
<span id="input-error" style="color:red;visibility:hidden">Alphanumeric
characters only</span>
修改代码可能稍微好一点,以便代替data-
属性,它使用pattern
属性,即使在禁用JavaScript时,也会在某些浏览器上提供某些功能。作为指定允许字符集的灵活性。但是,您需要有效地实现正则表达式解析器,因此增益可能与所需的工作不对应。
答案 1 :(得分:0)
我有一个允许使用字符的脚本:
考虑你的html:<input type="text" id="yourID"></input>
<script>
document.getElementById("yourID").onkeypress = function(e) {
var chr = String.fromCharCode(e.which);
if ("Which characters are allowed? Type them instead of these, without any seperation".indexOf(chr) < 0)
return false;
};
</script>
如果你想只允许字母和数字使用:
<script>
document.getElementById("yourID").onkeypress = function(e) {
var chr = String.fromCharCode(e.which);
if ("1234567890qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM".indexOf(chr) < 0)
return false;
};
</script>