我一整天都在测试我的代码,但什么也没发生。表单自动打开success.html,不使用脚本。
function FormValidation(theForm) {
var errors = "";
var alph = /^[\w ]+$/;
var cardnumb = /^\d{16}$/;
var cvvnumb = /^\d{3}$/;
var monthnumb = /^\d{1,2}$/;
var yearnumb = /^\d{4}$/;
if (form.one.value == "") {
errors += "Please enter your full name! \n";
}
else if (!alph.test(form.one.value)) {
errors += "Full name is wrong or includes invalid characters! \n";
}
if (form.two.value == "") {
errors += "Please enter your 16-digit code! \n";
}
if (!cardnumb.test(form.two.value)) {
errors += "Card number does not consist of 16 digits or includes invalid characters! \n";
}
if (form.three.value == "") {
errors += "Please enter your month of expiration! \n";
}
if (!monthnumb.test(form.three.value)) {
errors += "The month does not consist of 2 digits or includes invalid characters! \n";
}
if (form.four.value == "") {
errors += "Please enter your year of expiration! \n";
}
if (!yearnumb.test(form.four.value)) {
errors += "The year does not consist of 4 digits or includes invalid characters! \n";
}
if (form.five.value == "") {
errors += "Please enter your 3-digit CVV code! \n";
}
if (!cvvnumb.test(form.five.value)) {
errors += "The CVV does not consist of 3 digits or includes invalid characters! \n";
}
if (!content == "") {
alert(content);
return false;
}
} <!DOCTYPE html>
<html lang="en-US" class="Html" id="Main" dir="auto">
<head class="Head" id="Main">
<link rel="stylesheet" type="text/css" href="style.css">
<meta name="description" content="NRN">
<meta name="author" content="NRN">
<title class="Title" id="Title">NRN</title>
</head>
<body class="Body" id="Main">
<nav>
<ul>
<li><a href="index.html">Home</a></li>
</ul>
</nav>
<p class="p1">Payment form validation using JavaScript<p>
<form method="POST" action="success.html" class="myForm" name="myForm" onSubmit="javascript:return FormValidation(this)">
<div class="form-group-name">
<label for="name">Owner</label><br>
<input type="text" placeholder="Name on card" class="form-control-1" id="one" name="one">
</div>
<div class="form-group-number">
<label for="number">Card number</label><br>
<input type="text" placeholder="16-digit code" class="form-control-2" id="two" name="two">
</div>
<div class="form-group-date">
<label for="date">Expiration date</label><br>
<input type="text" placeholder="Month" class="form-control-3" id="three" name="three">
<input type="text" placeholder="Year" class="form-control-3" id="four" name="four">
</div>
<div class="form-group-cvv">
<label for="cvv">CVV</label><br>
<input type="text" placeholder="3-digit code" class="form-control-4" id="five" name="five">
</div>
<div class="form-group-submit">
<input type="submit" class="submit_form" value="Validate">
</div>
</form>
</body>
</html>
我已经检查了所有的东西,以及许多教程,但这并没有帮助。请帮帮我!提前感谢!问题可能在.css文件中吗?
发布于 2017-03-15 12:58:09
您的javascript验证函数永远不会返回false,因为content永远不等于"",content在任何地方都没有设置,因此它将是未定义的,因此即使发生错误,表单也会继续提交。
首先,你应该改变一下
if (!content == "") {
alert(content);
return false;
}至
if (!errors == "") {
alert(errors);
return false;
} else {
return true;
}如果您的javascript函数返回true,表单将继续提交。如果它返回false,如果出现错误,它将停止提交表单。
此外,还可以在onSubmit元素的form属性中设置如下函数:
<form onSubmit="return FormValidation(this)""></form>如Tulio Faria所述
发布于 2017-03-15 13:11:56
函数中的“表单”改为“theFrom”
您可以在这里调试并发现该表单未定义。
if (form.one.value == "") {
errors += "Please enter your full name! \n";
}将其替换为“theForm”函数FormValidation中的每个位置
if (theForm.one.value == "") {
errors += "Please enter your full name! \n";
}同样,这里没有定义内容。
if (!content == "") {
alert(content);
return false;
}它应该是错误的
if (!errors == "") {
alert(errors);
return false;
} else {
return true;
}这是你的工作代码
<!DOCTYPE html>
<html lang="en-US" class="Html" id="Main" dir="auto">
<head class="Head" id="Main">
<meta name="description" content="NRN">
<meta name="author" content="NRN">
<title class="Title" id="Title">NRN</title>
<script type="text/javascript">
function FormValidation(theForm) {
var errors = "";
var alph = /^[\w ]+$/;
var cardnumb = /^\d{16}$/;
var cvvnumb = /^\d{3}$/;
var monthnumb = /^\d{1,2}$/;
var yearnumb = /^\d{4}$/;
if (theForm.one.value == "") {
errors += "Please enter your full name! \n";
}
else if (!alph.test(theForm.one.value)) {
errors += "Full name is wrong or includes invalid characters! \n";
}
if (theForm.two.value == "") {
errors += "Please enter your 16-digit code! \n";
}
if (!cardnumb.test(theForm.two.value)) {
errors += "Card number does not consist of 16 digits or includes invalid characters! \n";
}
if (theForm.three.value == "") {
errors += "Please enter your month of expiration! \n";
}
if (!monthnumb.test(theForm.three.value)) {
errors += "The month does not consist of 2 digits or includes invalid characters! \n";
}
if (theForm.four.value == "") {
errors += "Please enter your year of expiration! \n";
}
if (!yearnumb.test(theForm.four.value)) {
errors += "The year does not consist of 4 digits or includes invalid characters! \n";
}
if (theForm.five.value == "") {
errors += "Please enter your 3-digit CVV code! \n";
}
if (!cvvnumb.test(theForm.five.value)) {
errors += "The CVV does not consist of 3 digits or includes invalid characters! \n";
}
if (!errors == "") {
alert(errors);
return false;
} else {
return true;
}
}
</script>
</head>
<body class="Body" id="Main">
<nav>
<ul>
<li><a href="index.html">Home</a></li>
</ul>
</nav>
<p class="p1">Payment form validation using JavaScript<p>
<form method="POST" action="success.html" class="myForm" name="myForm" onSubmit="javascript:return FormValidation(this)">
<div class="form-group-name">
<label for="name">Owner</label><br>
<input type="text" placeholder="Name on card" class="form-control-1" id="one" name="one">
</div>
<div class="form-group-number">
<label for="number">Card number</label><br>
<input type="text" placeholder="16-digit code" class="form-control-2" id="two" name="two">
</div>
<div class="form-group-date">
<label for="date">Expiration date</label><br>
<input type="text" placeholder="Month" class="form-control-3" id="three" name="three">
<input type="text" placeholder="Year" class="form-control-3" id="four" name="four">
</div>
<div class="form-group-cvv">
<label for="cvv">CVV</label><br>
<input type="text" placeholder="3-digit code" class="form-control-4" id="five" name="five">
</div>
<div class="form-group-submit">
<input type="submit" class="submit_form" value="Validate">
</div>
</form>
</body>
</html>发布于 2017-03-15 13:12:52
您的问题是您需要处理submit事件,所以您的函数需要一个额外的参数(事件),其中的第一个代码行(函数)必须是event.preventDefault(),所以在提交表单之前,您的函数将被执行,然后在代码的末尾,如果验证进行了,可以使用js提交表单,如解释的here。你会有这样的东西
function formValidation(theForm, event)
{
event.preventDefault()
//your code
if(allOk)
{ theForm.submit()
}
else
{
//do something
}
}在HTML端,您将拥有
<form method="POST" action="success.html" class="myForm" name="myForm" onSubmit="return FormValidation(this, event)">https://stackoverflow.com/questions/42810307
复制相似问题