我试图在我的(工作)验证脚本上插入这段代码(我在网站上找到的代码):
if (register.username.match(/\W/)) {
alert('You have special characters on username field.');
return false;
}
它没有做任何事情,也阻止了整个脚本的工作。
这是html表单(不是全部):
<form name="register" method="POST" action="registar.php" onsubmit="return validateForm();">
<ul class="left-form">
<h2>Nova conta:</h2>
<li>
<input type="text" name="username" placeholder="Username" required/>
<div class="clear"> </div>
</li>
<li>
<input type="text" name="email" placeholder="Email" required/>
<div class="clear"> </div>
</li>
<li>
<input type="password" name="pass" placeholder="Password" required/>
<div class="clear"> </div>
</li>
<li>
<input type="password" name="pass_confirm" placeholder="Confirmar a password" required/>
<div class="clear"> </div>
</li>
<input type="submit" value="Registar">
<div class="clear"> </div>
</ul>
</form>
这是我的Javscript代码(没有特殊字符检查):
function validateForm() {
if (register.username.value.length <= 2) {
alert("O username escolhido é demasiado curto.");
return false;
}
if (register.username.value.length > 20) {
alert("O username escolhido é demasiado longo.");
return false;
}
var x = register.email.value;
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
alert("O email inserido parece ser inválido.");
return false;
}
if (register.username.value == register.pass.value) {
alert("Por questões de segurança, pedimos que use uma password diferente do seu nome de utilizador.");
return false;
}
if ((register.pass.value.length < 6) || (register.pass.value.length > 20)) {
alert("Certifique-se que a sua password tem entre 6 e 20 letras.");
return false;
}
if (register.pass.value != register.pass_confirm.value) {
alert("As passwords não condizem.");
return false;
}
return true;
}
忽略警报,因为它们只是显示消息。
有人可以写一段代码来检查特殊字符(!,。+ *等)或者告诉我我使用的代码有什么问题吗?
答案 0 :(得分:2)
您可能应该将代码更改为:
if (register.username.value.match(/\W/)) {
alert('You have special characters on username field.');
return false;
}
区别是什么?好吧,如果你意识到我在中间加了.value
。因为register.username
会引用用户名输入元素,并且它没有match
方法。我们需要检查输入的文字。通过检查input element reference,您可以意识到我们使用了value
属性来返回输入的文本。因此register.username.value
是用户输入的文字,因为它是一个字符串,我们可以在其上使用.match
method。
您现在可以将任何正则表达式传递给满足您需求的匹配方法。同时检查the guide on regex。
还要经常检查开发者控制台中显示的错误。