一直在使用JavaScript,我想要做的只是允许传递字段中的某些字符 - a-z,A-Z和0-9。
<form action="http://www.cknuckles.com/cgi/echo.cgi" method="get" name="logOn">
User Name:<br />
<input type="text" name="userName" size="25" /><br />
Password:<br />
<input type="password" name="pw" size="25" /><br />
<input type="submit" value="Log In" onClick="validate()"/>
</form>
上面是我的HTML,下面是我尝试用来验证它的JavaScript - 但它不起作用 - 任何线索。
<script language="javascript">
document.logOn.onsubmit=validate;
function validate(){
var name=document.logOn.pw.value;
if(!name = "[a-zA-Z0-9]"){
alert("Your Password Cant Have Any Funky Things In It - Play It Straight!");
return false;
}
return true;
}
</script>
但这不起作用。我仍然可以把字符放在“*”和“[”和“{”等
中有什么想法吗?
答案 0 :(得分:25)
你需要让你的条件测试regexp,而不是字符串:
if(!/^[a-zA-Z0-9]+$/.test(name)){ ...
含义:
^
- 行首[a-zA-Z0-9]+
- 一个或多个字符/数字$
- 行尾或者您可以搜索其中的反转,即“任何未接受的字符”:
if(/[^a-zA-Z0-9]/.test(name)){
答案 1 :(得分:4)
if (name.match(/[\W_]/)) { //...
如果“name”字符串具有任何非字母数字或下划线的字符,则执行该块。请注意,我们必须单独检查下划线(_
),因为字母数字字符类(\w
)包含下划线(因此否定类(\W
)不)。
答案 2 :(得分:0)
以下解决方案将仅接受字母数字值和一些 特殊键,例如退格键,删除等。
如果要添加其他键,则将其添加到数组。
如果要添加一些特殊符号,请添加到同一数组中或创建一个新数组,然后将其与诸如ex:
这样的函数进行比较yourNewVariableName.indexOf(e.keyCode)
var specialKeys = [8, 9, 46, 36, 35, 37, 39];
function IsAlphaNumeric(e) {
var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode;
var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode));
return ret;
}
Alphanumeric value:
<input type="text" onkeypress="return IsAlphaNumeric(event);" ondrop="return false;" onpaste="return false;" />