表单验证有效,但在用户输入错误答案时仍会提交
Form Validation Works But Still Submits When User Input The Wrong Answer
我写了一个 Javascript 在提交前验证我的表格。
Javascript 的功能是当用户提供的 phone 数字与我的 Javascript 中的结果相匹配时,阻止我的表单提交自己,而是显示一条错误消息“Phone 号码已被使用!"
我的问题是验证工作正常:用户收到警告,提示他们提供的 phone 号码已被使用,但我的表单在显示错误消息后仍自行提交。
我做错了什么?
下面是我的代码。
function check(form) /*function to check used phone number*/ {
/*the following code checkes whether the entered phone number is matching*/
if (form.phonenum.value == "0807575566464"
|| form.phonenum.value == "09057487463")
{
alert("Phone number used! provide a new one! \n") /*displays error message*/
} else if (form.phonenum.value.length<11 || form.phonenum.value.length>11) { alert("Phone number should be 11 digits! \nAnd it should begin with; 080, 081, 070, 090, or 091.");
}
else {
return false;
}
}
<form action='' method='POST' enctype="multipart/form-data" id="formName">
<input type="text" id="phonenum" name="myinput">
<button href='/' type='submit' onclick="check(this.form)">Submit</button>
</form>
我认为您需要添加 e.preventDefault() 以使其在您点击提交时停止重新加载页面。
你需要给onsubmit事件绑定一个函数,如果验证失败就停止该事件。
HTML:
<form action='' method='POST' enctype="multipart/form-data" id="formName" onsubmit="validateForm(event)">
JavaScript:
function validateForm(event) {
if(validation fails...) {
event.preventDefault();
....
}
}
preventDefault 函数的文档和示例:
https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault
除了使用 event.preventDefault() 你也可以 return false:
在你的情况下你的 JavaScript 应该是这样的
HTML:
<form action='/test/' method='POST' enctype="multipart/form-data" id="formName" onsubmit="validateForm(event)">
<input type="text" id="phonenum" name="myinput">
<button href='/' type='submit'>Submit</button>
</form>
JavaScript:
function validateForm(event) {
if (this.phonenum.value == "0807575566464" || this.phonenum.value == "09057487463") {
event.preventDefault();
alert("Phone number used! provide a new one! \n");
} else if (this.phonenum.value.length != 11) {
this.preventDefault();
alert("Phone number should be 11 digits! \nAnd it should begin with; 080, 081, 070, 090, or 091.");
}
}
我写了一个 Javascript 在提交前验证我的表格。 Javascript 的功能是当用户提供的 phone 数字与我的 Javascript 中的结果相匹配时,阻止我的表单提交自己,而是显示一条错误消息“Phone 号码已被使用!"
我的问题是验证工作正常:用户收到警告,提示他们提供的 phone 号码已被使用,但我的表单在显示错误消息后仍自行提交。
我做错了什么?
下面是我的代码。
function check(form) /*function to check used phone number*/ {
/*the following code checkes whether the entered phone number is matching*/
if (form.phonenum.value == "0807575566464"
|| form.phonenum.value == "09057487463")
{
alert("Phone number used! provide a new one! \n") /*displays error message*/
} else if (form.phonenum.value.length<11 || form.phonenum.value.length>11) { alert("Phone number should be 11 digits! \nAnd it should begin with; 080, 081, 070, 090, or 091.");
}
else {
return false;
}
}
<form action='' method='POST' enctype="multipart/form-data" id="formName">
<input type="text" id="phonenum" name="myinput">
<button href='/' type='submit' onclick="check(this.form)">Submit</button>
</form>
我认为您需要添加 e.preventDefault() 以使其在您点击提交时停止重新加载页面。
你需要给onsubmit事件绑定一个函数,如果验证失败就停止该事件。
HTML:
<form action='' method='POST' enctype="multipart/form-data" id="formName" onsubmit="validateForm(event)">
JavaScript:
function validateForm(event) {
if(validation fails...) {
event.preventDefault();
....
}
}
preventDefault 函数的文档和示例: https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault
除了使用 event.preventDefault() 你也可以 return false:
在你的情况下你的 JavaScript 应该是这样的
HTML:
<form action='/test/' method='POST' enctype="multipart/form-data" id="formName" onsubmit="validateForm(event)">
<input type="text" id="phonenum" name="myinput">
<button href='/' type='submit'>Submit</button>
</form>
JavaScript:
function validateForm(event) {
if (this.phonenum.value == "0807575566464" || this.phonenum.value == "09057487463") {
event.preventDefault();
alert("Phone number used! provide a new one! \n");
} else if (this.phonenum.value.length != 11) {
this.preventDefault();
alert("Phone number should be 11 digits! \nAnd it should begin with; 080, 081, 070, 090, or 091.");
}
}