javascript - 使用 JavaScript 验证表单时检查特殊字符 (, ; .)

标签 javascript forms validation special-characters

我尝试在我的(工作)验证脚本中插入这段代码(我在网站上找到的):

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;
}

忽略警报,因为它们只是显示消息。

有人可以编写一段代码来检查特殊字符(!,. + * 等),或者告诉我我使用的代码有什么问题吗?

最佳答案

您可能应该将代码更改为:

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还有。

还要始终检查开发者控制台中显示的错误。

关于javascript - 使用 JavaScript 验证表单时检查特殊字符 (, ; .),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28066202/

相关文章:

javascript - grunt-bower-task 正在从 Bower_components 中删除 CoffeeScript,然后提示它丢失了

javascript - 如何使表单仅在所有函数返回 true 时才提交?

javascript - AsyncAwait 不等待获取响应

javascript - 中断 fadeTo 函数

c# - 在 Windows 服务和 Windows 应用程序之间使用 EventWaitHandles

css - 垂直对齐下拉列表或文本输入中的文本?

jquery - jquery Accordion 中的必填字段

validation - F#强制用户输入整数

javascript - 从 onclick 按钮传递值但在 jquery 中收到错误

java - 从一个字段切换到另一个字段不起作用(在 Java SWT 中又称为 "tab order")