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>