表单验证失败,但仍提交
Form validation fails but still submits
>我有以下JS代码:
function checkFull(id) {
var input = $('#' + id).val();
if (input == "") {
return false;
}
else {
return true;
}
}
function checkSame(id1,id2) {
var input1 = $('#' + id1).val();
var input2 = $('#' + id2).val();
if (input1 == input2) {
return true;
}
else {
return false;
}
}
function showErrors() {
if (!checkFull('username')) {
$('#userfield').show();
}
else {
$('#userfield').hide();
}
if (!checkFull('email')) {
$('#notsame').show();
}
else {
$('#notsame').hide();
}
if (!checkFull('confemail')) {
$('#notsame2').show();
}
else {
$('#notsame2').hide();
}
if (!checkFull('espncode')) {
$('#nocode').show();
}
else {
$('#nocode').hide();
}
if (notSame('email','confemail')) {
$('#notsame2').show();
$('#notsame').show();
}
else {
$('#notsame2').hide();
$('#notsame').hide();
}
}
function valform() {
showErrors();
if (checkFull('username') && checkFull('email') && checkFull('confemail') && checkSame('email','confemail') && checkFull('espncode')) {
form.submit();
alert('success');
}
else {
return false;
}
}
和以下形式:
<form method="post" action="forms/post.asp" onsubmit="valform();return false">
<strong>Poker Username</strong> <span id="userfield" style="display:none;color:#F00">*</span><br />
<input type="text" name="username" id="username" style="width:230px;" />
<br /><br />
<div class="vert">
<strong>Email Address</strong> <span id="notsame" style="display:none;color:#F00">*</span><br />
<input type="text" name="email" id="email" style="width:230px;" />
</div>
<div class="vert2">
<strong>Confirm Email Address</strong> <span id="notsame2" style="display:none;color:#F00">*</span><br />
<input type="text" name="confemail" id="confemail" style="width:230px;" />
</div>
<div style="clear:both;"></div>
<div class="espn">
<div class="txt"><strong>Enter the ESPN special code</strong></div>
<input type="text" name="espncode" id="espncode" style="width:230px;" />
</div>
<div id="nocode" style="display:none">
You need to enter the code above
</div>
<div class="tc">
<input type="checkbox" id="agree" name="agree" /> <strong>You agree to the terms and conditions of this sweepstake. Only one entry per person per sweepstake period. Any additional entries will be disqualified.</strong>
</div>
<br />
<div class="submit">
<input type="image" src="submit_BTN.png" />
</div>
</form>
即使我将表单留空,当我按提交时,它也会通过。为什么?
您需要
从submit
处理程序中的验证函数返回值:
onsubmit="valform();return false"
应该是:
onsubmit="return valform();"
每当valform
返回 false 时,这将阻止表单提交。
顺便说一下,valform
函数中的form.submit()
调用毫无意义。如果函数不返回 false,它无论如何都会提交。
if (/*validity checks pass*/) {
alert('success');
}
else {
return false;
}
但是,用这个小提琴浏览你的代码,我注意到有一个错误:
引用错误: 找不到变量: 不相同
如果您修复函数的名称,它将起作用。您应该使用可用的开发人员工具来调试此类小错误。Firefox和Chrome/Safari内置了一个Web检查器。歌剧也有蜻蜓。
可能的原因:
-
onsubmit="valform();return false"
更改为表单中的onsubmit="valform();"
。
如果仍然不起作用,请尝试,然后告诉。
相关文章:
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 自定义表单验证和提交
- 带有验证和隐藏字段值的提交按钮
- jQuery:使用“jQuery验证”后无法提交表单's远程验证
- 如何在使用ajax提交的codeigniter中使用form_validation验证表单数据
- 我这里有两个表格,在提交验证第一个表格后,我如何转到第二个表格进行验证
- 未执行Ajax隐藏表单提交验证
- 提交/验证Jquery
- 使用提交验证日期输入字段
- JavaScript表单提交验证会干扰其他提交按钮
- HTML表单提交验证没有't为JS函数工作
- j查询表单提交验证未提交
- 仅将 jQuery 表单提交验证应用于 2 个提交按钮中的 1 个
- 为什么这个表单总是提交…验证javascript不起作用
- jQuery blockUI插件不工作在ASP.. NET提交验证器Chrome/IE9
- Redux表单提交验证不设置错误消息
- JavaScript 在提交验证时无法正常工作,当我单击提交它询问到期日期和 CVV
- 表单提交验证动态下拉列表数
- 禁用JS提交验证检查
- onChange提交验证