Javascript 验证失败后表单仍提交
我有一个表单,我试图验证具有相同类的字段。必需的Javascript 验证失败后表单仍提交,javascript,jquery,html,Javascript,Jquery,Html,我有一个表单,我试图验证具有相同类的字段。必需的 <form id="HotelBooking" method="post" action="#"> <input type="text" class="required" name="vardas" /> <input type="text" class="required" name="pav" /> <input type="text" class="required" name="tel" /
<form id="HotelBooking" method="post" action="#">
<input type="text" class="required" name="vardas" />
<input type="text" class="required" name="pav" />
<input type="text" class="required" name="tel" />
<input type="submit" name="sb" value="Tvirtinti" onclick="tikrinti();"/>
</form>
我做错了什么?您应该将
返回false
放在each()之外。
:
问题是您从
each()
-函数返回的是false
,而不是submit()
-函数
这里有一个解决方案:
$(document).ready(function () {
$('#HotelBooking').submit(function () {
var valid = true;
$('.required').each(function () {
if ($(this).val().length == 0) {
alert('Please Enter your value');
$(this).focus();
valid = false;
}
});
return valid;
});
});
编辑:呜呜,太晚了
<script type="text/javascript">
$('#submitRegister').click( function(){
var validation = $('#connect').vValidator('validate');
Window.alert("hii");
});
</script>
$(“#submitRegister”)。单击(函数(){
var验证=$(“#连接”).vValidator('validate');
窗口警报(“hii”);
});
您的返回false
正在退出.each()
循环,而不是submit
事件每次都会覆盖hasError,因此如果最后一个字段有值,则无论前面的字段是否有值,它仍将提交。(尽管警报仍然会触发。)嗯,不,因为hasrerror
总是设置为true
,无论它是否被另一个true
覆盖,或者我是否遗漏了什么?编辑:我将hasrerror
-名称(默认为false
)更改为valid
(默认为true
)。在任何一种情况下,我都看不出用相同的值反复重写任何一个变量会对结果产生怎样的影响?因为您已经编辑了代码,所以我的原始注释不再适用。我承认现在写的方式可以达到预期的目标。但是,您的第一个答案仅根据最后一个字段是否为空返回true/false。是的,我注意到你已经编辑了你的答案三次。你甚至不再使用相同的变量。我认为意识到我是对的,更正你的答案,然后反驳我的评论是不诚实的。@BrianVanderbusch-我在评论中提到了第二次编辑,只是一个变量名的更改。然而,第一次编辑是因为一个错误(我返回了hasrerror
,如果表单有错误,则返回true
,如果表单有效,则返回false
),而我所做的只是将return hasrerror
更改为return!hasError
(这样,如果表单有错误,它将返回false
)。但是,在这两个版本中,都不会出现覆盖hasrerror的问题。编辑:最后一次从hasrerror
更改为valid
是因为我认为这更有意义。请解释一下您的代码。只有代码的答案不受欢迎。
$(document).ready(function () {
$('#HotelBooking').submit(function () {
var valid = true;
$('.required').each(function () {
if ($(this).val().length == 0) {
alert('Please Enter your value');
$(this).focus();
valid = false;
}
});
return valid;
});
});
<script type="text/javascript">
$('#submitRegister').click( function(){
var validation = $('#connect').vValidator('validate');
Window.alert("hii");
});
</script>