Javascript防止表单post,如果没有验证
Javascript to prevent form post if not validated
对于一个简单的表单,我有以下验证代码。我能够执行基本的验证,但表单仍然得到张贴,即使数据是错误的,并产生警报。我怎样才能阻止这一切发生呢?
<JS代码/strong>
function validate(){
validateForm();
}
function validateForm() {
var x = document.forms["myForm"]["fname"].value;
var y = document.forms["myForm"]["pname"].value;
var email = document.forms["myForm"]["email"].value;
var phone = document.forms["myForm"]["phone"].value;
var date = document.forms["myForm"]["date"].value;
var month = document.forms["myForm"]["month"].value;
var year = document.forms["myForm"]["year"].value;
window.load = function() {
var myForm = document.getElementById('myForm');
myForm.onsubmit = function(e) {
return validateForm(); // will be false if the form is invalid
}
}
if (x == null || x == "") {
alert("Name must be filled out");
return false;}
else if (y == null || y == "") {
alert("Address must be filled out");
return false;
}
else if(email == '' || email.indexOf('@') == -1 || email.indexOf('.') == -1)
{
alert("Insert Valid Email Address");
return false;
}
else if(phone == ''|| phone <1000000000 || phone >9999999999){
alert("Enter valid phone number");
return false;
}else if(date =='' || date<01 || date >31){
alert("Enter valid date ");
return false;
}else if(month =='' || month<1 || month >12){
alert("Enter valid month ");
return false;
}else if(year =='' || year<1800 || year >2015){
alert("Enter valid year ");
return false;
}
}
<form name="myForm" action="http://www.randyconnolly.com/tests/process.php" onsubmit="return validate()" method="post">
<table width="30%" border="0" align="center" cellpadding="10" cellspacing="20">
<tr>
<td width="20%"> <span style="font-size: 22px">Name:</span><br>
<br /></td>
<td width="80%"><input type="text" name="fname" required /></td>
</tr>
<tr>
<td><span style="font-size: 22px">Picture Name: <br>
<br></span></td>
<td><input type="text" name="pname" required /></td>
</tr>
<tr>
<td><span style="font-size: 22px">Email:</span> <br>
<br></td>
<td><input type="text" name="email" required /></td>
</tr>
<tr>
<td><span style="font-size: 22px">Phone:</span> <br>
<br></td>
<td><input type="number" name="phone" required /></td>
</tr>
<tr>
<td><span style="font-size: 22px">Date(mm/dd/yyyy):</span></td>
<td><input type="text" name="month" size="2" required />
/
<input type="text" name="date" size="2" required />
/
<input type="text" name="year" size="4" required /></td>
</tr>
<tr>
<td><span style="font-size: 22px">Artwork</span></td>
<td><input type="file" accept="image/gif" name="pic" ></td>
</tr>
</table>
<br><br>
<input class="button-0" type="submit" value="Submit" />
<br>
</form>
您的代码有几个问题。
您的验证函数需要返回
false
以防止表单提交。您正在
validateForm
函数内部注册window.onload
处理程序。因为,在调用validateForm
函数的时候,表单已经被提交了。标记中的处理程序是
validate
。你的validate
方法不返回任何东西,所以提交也不会被阻止。
修复一切的最简单方法是从代码中完全删除window.onload
处理程序。然后您可以将validate
更改为:
function validate() {
return validateForm();
}
我让它工作了。而不是调用validate(),在调用validateForm()我直接调用validateForm()在onsubmit。谢谢你的帮助。
相关文章:
- 如何知道元素在屏幕上是否可见.如果没有,请滚动页面
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- 如果没有互联网连接,Android WebView离线消息
- 如果没有历史记录,我如何隐藏图像或按钮onclick=;历史.go(-1);
- 如果没有从下拉列表中选择任何值,则允许使用php、mysql、javascript将文本框添加到mysql表中
- 如果没有Ember中的控制器,我如何更改查询参数
- 如果没有添加PHP&Javascript
- 如果没有其他函数链接到promise,则默认行为
- 如果没有document.ready(),我怎么能拥有多个javascript函数呢
- 如果没有任何输入,如何启用按钮
- 有没有一个javascript库可以生成这样的垂直切片背景图像?如果没有,我怎么能创建它
- Jquery自动完成:如果没有选择任何项目,则使tab键选择第一个项目
- 如果设置了位置,如何在每个状态下检查路由器ui,如果没有,则转到登录页
- 如何从网站获得apple touch图标,如果没有;不存在,则显示收藏夹
- 自动单击按钮(如果没有类)
- Javascript防止表单post,如果没有验证
- 我想弹出窗口出现,如果没有验证错误
- Javascript regex验证如果没有内容
- d3.json()支持身份验证吗?如果没有,还有哪些其他JavaScript选项可用于JSON检索
- 表单验证通过java脚本数组与警报,如果没有验证