【发布时间】:2016-12-19 03:47:58
【问题描述】:
尝试验证单选按钮(以及其他验证);但是,每当验证单选按钮时,一切都会重置,甚至不会说“表单已提交”或验证表单的下一部分。
function submit() {
alert("The form was submitted");
}
function validate() {
if (document.myForm.user.value.length < 6) {
alert("Please enter a username that is at least 6 characters long");
document.myForm.user.focus();
return false;
}
if (document.myForm.pass.value.length < 6) {
alert("Please enter a password that is at least 6 characters long.");
document.myForm.pass.focus();
return false;
}
if (document.myForm.pass.value != document.myForm.pass1.value) {
alert("Your passwords do not match! Please re-enter your password!");
document.myForm.pass1.focus();
return false;
}
if (document.myForm.first.value == "") {
alert("Please provide your First name!");
document.myForm.first.focus();
return false;
}
if (document.myForm.last.value == "") {
alert("Please provide your Last name!");
document.myForm.last.focus();
return false;
}
if (document.myForm.address.value == "") {
alert("Please provide your Address!");
document.myForm.address.focus();
return false;
}
if (document.myForm.city.value == "") {
alert("Please provide your City!");
document.myForm.city.focus();
return false;
}
if (document.myForm.state.value == "") {
alert("Please provide your State!");
document.myForm.state.focus();
return false;
}
if (document.myForm.zip.value == "" ||
document.myForm.zip.value.length != 5) {
alert("Please provide a Zip code in the format #####.");
document.myForm.zip.focus();
return false;
}
var zip = /^[0-9a]+$/;
if (!document.myForm.zip.value.match(zip)) {
alert("Please only enter numeric characters for the Zip code");
document.myForm.zip.focus();
return false;
}
if (document.myForm.creditcard[0].checked = true) {
return true;
} else if (document.myForm.creditcard[1].checked == true) {
return true;
} else if (document.myform.creditcard[2].checked == true) {
return true;
} else {
alert("Please choose your credit card type!");
return false;
}
if (document.myForm.creditno.value == "" ||
document.myForm.creditno.value.length < 13) {
alert("Please provide a valid credit card number!");
document.myForm.creditno.focus();
return false;
}
if (!document.myForm.creditno.value.match(zip)) {
alert("Please provide a valid credit card number!");
document.myForm.creditno.focus();
return false;
}
alert("The form was submitted");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
<form action="" name="myForm" onsubmit="return (validate())" ;>
Username:
<input name="user" type="text" size="25">
<br>Password:
<input name="pass" type="password" size="20">
<br>Confirm Password:
<input name="pass1" type="password" size="20">
<br>First Name:
<input name="first" type="text" size="30">
<br>Last Name:
<input name="last" type="text" size="30">
<br>
<br>Address:
<input name="address" type="text" size="50">
<br>City:
<input name="city" type="text" size="35">
<br>State:
<input name="state" type="text" size="25">
<br>Zip Code:
<input name="zip" type="text" size="5">
<br>
<br>**Credit Card:
<br>
<input name="creditcard" type="radio">Visa
<br>
<input name="creditcard" type="radio">Mastercard
<br>
<input name="creditcard" type="radio">American Express
<br>
<br>** Credit Card #.
<input name="creditno" type="password" size="25">
<br>
<br>We welcome your comments and feedback:
<br>
<textarea maxlength="100"></textarea>
<br>
<input type=submit value="Submit Query">
<input type=reset>
</form>
</p>
【问题讨论】:
-
if(document.myForm.creditcard[0].checked = true) 前面的**是什么?如果我删除了它们,代码就会为我验证。
-
**仅用于本网站的“加粗”
-
@chrnocross 在代码示例中,您不能再使用 markdown 语法,它是原样的代码,或者是 markdown,不能同时使用。
-
从单选框的 if 语句中删除 return true,仅供参考,验证这样的表单是非常糟糕的做法,我建议至少使用表单验证器插件。
-
@RaresHideg 如果我从 if 语句中删除返回 true,它会使 Visa 成为检查并且不显示警报消息
标签: javascript html forms validation