【问题标题】:Remove form error with correct input使用正确的输入删除表单错误
【发布时间】:2015-12-03 08:07:22
【问题描述】:

我刚刚制作了一个注册表,如果出现问题,它会用红色 (CSS) 字母告诉您。但是,我希望一旦用户正确写入该文本,该文本就会消失。我该怎么做?

<script>
    function validateForm2() {
        var usrnm2 = document.getElementById("usrnm2").value;
        var passw2 = document.getElementById("passw2").value;
        var cnfpassw2 = document.getElementById("cnfpassw2").value;
        var age = document.getElementById("age").value;

        if (usrnm2 == null || usrnm2 == "") {
            document.getElementById("error1").innerHTML = "You must enter a username";
            return false;
    }
        else if (passw2 == null || passw2 == "") {
            document.getElementById("error2").innerHTML = "You must enter a password";
            return false;
    }
        else if (cnfpassw2 !== passw2) {
            document.getElementById("error3").innerHTML = "Password does not match";
            return false;
    }
        else if (age < 18) {
            document.getElementById("error4").innerHTML = "You are not old enough to enter this site"
            return false;
    }
        else {
            alert("Congratulations, you have registered successfully!")
    }
    }
</script>
<script>
    function register2() {
        validateForm2()
    }
</script>
<form>
    Username:
    <input id="usrnm2" type="text" name="username"><p id="error1"></p>
    Password
    <input id="passw2" type="password" name="password"><p id="error2"></p>
    Confirm Password
    <input id="cnfpassw2" type="password" name="confirmpw2"><p id="error3"></p>
    Age
    <input id="age" type="number" name="age"><p id="error4"></p><br />
    <input id="bttn2" type="button" value="Register!" onclick="register2()"><br />
</form>

【问题讨论】:

  • “走开”的 css 在哪里?
  • 起初您可以展示您尝试过的内容(register2 未在帖子中显示)。另请注意,将字符串与数字进行比较可能会给您带来意想不到的结果。
  • 什么时候调用 validateForm2?
  • 是的对不起,它绑定到函数 register2() { validateForm2() }
  • 请记住它目前有效,唯一的问题是即使密码匹配,红色文本也会保留在那里。

标签: javascript forms input passwords


【解决方案1】:

将验证条件分成单个块if 语句,然后包含一个处理程序,用于在正确输入字段时使其恢复正常:

if (field is entered incorrectly) {
    document.getElementById("error").innerHTML = "You must enter correctly";
    return false;
}
else {
    document.getElementById("error").innerHTML = "";
}

...

alert("Congratulations, you have registered successfully!");

您只需在所有语句之后放置警报 - 只要没有任何条件失败并因此返回,它就会执行。

【讨论】:

  • 是否应该在每次更改时调用这些处理程序?
  • 这是可能的,但不是执行验证所必需的 - 我刚刚意识到我遗漏了一些内容并将更新
  • @Wolf 我的帖子回答了你的问题吗?
  • 这不是我的问题。我只是觉得更改验证会更容易删除错误标志。
  • @Wolf 啊,我明白了,您问的是何时执行检查,而不是如何删除文本。我建议查看 onkeyup 事件 - 它允许您在每次用户输入字符时执行这些检查
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多