gpt4 book ai didi

javascript - 表单未正确验证

转载 作者:行者123 更新时间:2023-11-30 12:34:51 24 4
gpt4 key购买 nike

我正在处理一个网络表单,该表单在提交后应该通过一些验证规则。我现在遇到麻烦的规则是,年龄应该只是一个数字,例如(24 可以,但 24 岁应该给出错误)。

现在我正试图让它只接受数字内容并且没有空格。

我还有一个不允许空格的名字字段并使用了语句

if(!(/^\S{3,}$/.test(fName))) {
errMsgHolder.innerHTML = "Name cannot contain spaces";
return false;
}

检查空格,这工作正常(我将在最后发布完整的代码)。所以我想我可以用我的 checkAge() 函数做一些类似的事情,但我无法让它工作。无论我是否在年龄字段中输入任何内容,该表格始终会提交。但是,如果我将名称字段留空或输入无效输入,则会得到正确的错误。

这是我的代码:

<html>
<head>
<title>Project 5</title>
</head>

<body>
<form name="myForm" id="myForm" onsubmit="return validateForm()">
First Name: <input type="text" id="name"> <br>
<span id="nameErrMsg" class="error"></span> <br />
Age: <input type="text" id="age"> <br>
<span id="ageErrMsg" class="error"></span> <br />
Street Address: <input type="text" id="address"> <br>
State: <select>
<option value="la">LA</option>
<option value="tx">TX</option>
<option value="ok">OK</option>
<option value="mi">MI</option>
<option value="az">AZ</option>
</select> <br>
Login Password: <input type="password" id="password"> <br>
<input type="submit" value="Submit"> <br>
</form>

<script type="text/javascript">
function validateForm() {
return checkName() && checkAge();
}

function checkName() {
var form = document.myForm;
var fName = form.name.value;
var errMsgHolder = document.getElementById("nameErrMsg");
if(fName.length < 3) {
errMsgHolder.innerHTML = "Please enter a name with at least three letters";
return false;
}
else if(!(/^\S{3,}$/.test(fName))) {
errMsgHolder.innerHTML = "Name cannot contain spaces";
return false;
}
else {
errMsgHolder.innerHTML = " ";
return undefined;
}
}

function checkAge() {
var form1 = document.myForm;
var personAge = form1.age.value;
var ageErr = document.getElementById("ageErrMsg");
if(/\D/.test(personAge)) {
ageErr.innerHTML = " ";
return undefined;
}
else if(!(/\D/.test(personAge))) {
ageErr.innerHTML = "Please enter a numeric age";
return false;
}
else if(personAge.length < 1) {
ageErr.innerHTML = "Please enter your age";
return false;
}
else if(!(/^\S{3,}$/.test(personAge))) {
ageErr.innerHTML = "Age cannot contain spaces";
return false;
}
}
</script>

</body>
</html>

另外,正如本文所述,当我在浏览器上查看 Web 控制台时,我没有收到任何错误。任何人都可以找出为什么这不能正常工作和/或有其他方法可以在 checkAge() 函数上完成相同的任务吗?

更新了工作代码感谢您的帮助。现在我想发布代码,因为它可以正常工作,因为我遇到了以前从未遇到过的问题,希望这可以帮助遇到同样问题的其他人。

即使在实现了已接受的答案之后,我也收到了正确的错误消息,但前提是我只从我的 validateForm() 函数中调用了一个函数。我最终将这些函数调用分配给变量并从该函数返回变量,并且效果很好。

所以这是最终的工作代码:

<html>
<head>
<title>Project 5</title>
</head>

<body>
<form name="myForm" id="myForm" onsubmit="return validateForm()">
First Name: <input type="text" id="name"> <br>
<span id="nameErrMsg" class="error"></span> <br />
Age: <input type="text" id="age"> <br>
<span id="ageErrMsg" class="error"></span> <br />
Street Address: <input type="text" id="address"> <br>
State: <select>
<option value="la">LA</option>
<option value="tx">TX</option>
<option value="ok">OK</option>
<option value="mi">MI</option>
<option value="az">AZ</option>
</select> <br>
Login Password: <input type="password" id="password"> <br>
<input type="submit" value="Submit"> <br>
</form>

<script type="text/javascript">
function validateForm() {
var ckName = checkName();
var ckAge = checkAge();

return ckName && ckAge;
}

function checkName() {
var form = document.myForm;
var fName = form.name.value;
var errMsgHolder = document.getElementById("nameErrMsg");
if(fName.length < 3) {
errMsgHolder.innerHTML = "Please enter a name with at least three letters";
return false;
}
else if(!(/^\S{3,}$/.test(fName))) {
errMsgHolder.innerHTML = "Name cannot contain spaces";
return false;
}
else {
errMsgHolder.innerHTML = " ";
return undefined;
}
}

function checkAge() {
var form1 = document.myForm;
var personAge = form1.age.value;
var ageErr = document.getElementById("ageErrMsg");
if(personAge === "") {
ageErr.innerHTML = "Please enter your age";
return false;
}
else if(/\D/.test(personAge)) {
ageErr.innerHTML = "Please enter a numeric age";
return false
}
else {
ageErr.innerHTML = " ";
return undefined;
}
}
</script>

</body>
</html>

再次感谢您的帮助!

最佳答案

您可以使用一个正则表达式进行所有这些检查:

^\d+$

这确保条目有一个或多个数字(\d 是字符类 [0-9],+ 是“一个或多个”,^ 匹配字符串的开头,$ 匹配字符串的结尾。

关于javascript - 表单未正确验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371929/

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