gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 14:51:05 25 4
gpt4 key购买 nike

我需要使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com