javascript - 使用 JavaScript 的空表单字段的个别错误消息

标签 javascript html forms validation

我需要使用 JavaScript 验证我的表单,因为 iPhone/Safari 无法识别 required 属性。我希望在每个空的 input 字段下方显示单独的错误消息。

我的代码有效,但是当填写该字段时,单个错误消息不会消失。另外,我希望所有消息最初都出现,对于所有空字段(不是一个接一个)。抱歉,我对 JavaScript 非常陌生。

我的 HTML:

<form onsubmit="return validateForm()" method="post" action="form.php" name="english_registration_form" id="english_registration_form">
        <input type="text" id="name" name="name" aria-describedby="name-format" required placeholder="Name">
        <span class="error"><p id="name_error"></p></span>
        <input type="email" id="email" name="email" required placeholder="Email">
        <span class="error"><p id="email_error"></p></span>
        <input type="tel" id="telephone" name="telephone" required placeholder="Telephone">
        <span class="error"><p id="telephone_error"></p></span>
        <button class="register_button" type="submit" value="submit">Register Now</button>
    </form>

还有我的 JavaScript:

<script>
function validateForm() {
var x = document.forms["english_registration_form"]["name"].value;
var y = document.forms["english_registration_form"]["email"].value;
var z = document.forms["english_registration_form"]["telephone"].value;

if (x == null || x == "") {
    nameError = "Please enter your name";
    document.getElementById("name_error").innerHTML = nameError; 
    return false;
} 

else if (y == null || y == "") {
    emailError = "Please enter your email";
    document.getElementById("email_error").innerHTML = emailError;
    return false;
} 

else if (z == null || z == "") {        
    telephoneError = "Please enter your telephone";
    document.getElementById("telephone_error").innerHTML = telephoneError;
    return false;
} 

else {return true;}
}
</script>

感谢您的帮助。

最佳答案

这是一个解决方案,它在首次提交表单时显示所有相关错误,并在用户修改相关输入元素中的文本时删除错误。

为了让它在第一次运行时显示所有错误,我使用了 if 语句而不是 if else,并使用了一个标志来确定表单是否应该是提交。为了在修改输入时删除警告,我绑定(bind)了输入的 onkeyup 事件。

我最终删除了输入上的 required 属性,以便演示可以在支持它们的现代浏览器中运行。

现场演示:

document.getElementById("english_registration_form").onsubmit = function () {
    var x = document.forms["english_registration_form"]["name"].value;
    var y = document.forms["english_registration_form"]["email"].value;
    var z = document.forms["english_registration_form"]["telephone"].value;

    var submit = true;

    if (x == null || x == "") {
        nameError = "Please enter your name";
        document.getElementById("name_error").innerHTML = nameError;
        submit = false;
    }

    if (y == null || y == "") {
        emailError = "Please enter your email";
        document.getElementById("email_error").innerHTML = emailError;
        submit = false;
    }

    if (z == null || z == "") {
        telephoneError = "Please enter your telephone";
        document.getElementById("telephone_error").innerHTML = telephoneError;
        submit = false;
    }

    return submit;
}

function removeWarning() {
    document.getElementById(this.id + "_error").innerHTML = "";
}

document.getElementById("name").onkeyup = removeWarning;
document.getElementById("email").onkeyup = removeWarning;
document.getElementById("telephone").onkeyup = removeWarning;
<form method="post" action="form.php" name="english_registration_form" id="english_registration_form">
    <input type="text" id="name" name="name" aria-describedby="name-format" placeholder="Name"> <span class="error"><p id="name_error"></p></span>

    <input type="email" id="email" name="email" placeholder="Email"> <span class="error"><p id="email_error"></p></span>

    <input type="tel" id="telephone" name="telephone" placeholder="Telephone"> <span class="error"><p id="telephone_error"></p></span>

    <button class="register_button" type="submit" value="submit">Register Now</button>
</form>

JSFiddle 版本:https://jsfiddle.net/xga2shec/

关于javascript - 使用 JavaScript 的空表单字段的个别错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32708271/

相关文章:

javascript - 为什么我不能将 cookie 放入变量中,然后将结果分配给 div?

html - 响应式设计 - 部分内的 Div 列不使用部分样式

javascript - jQuery Mobile 表单验证 - 选择哪个插件?

PHP 页面在用户提交后存储表单输入变量

regex - HTML5 输入验证字母和数字

javascript - jQuery - 显示和隐藏电话号码的最后 4 个数字

javascript - jquery条件表单提交

javascript - 从数据库加载数据后如何对表中的数据进行排序?

javascript - 如何传递 table.rows.cells 的变量值来获取表格单元格值?

javascript - 智能客户端与 Ext JS