提交表单甚至返回false

时间:2014-05-23 09:06:34

标签: javascript php jquery ajax

我想使用ajax保存此表单数据。任何人都可以帮我解决以下问题。

如果我输入的所有条目都正确并提交,则刷新页面。

如果我输入任何错误并提交它发送错误。然后,如果我填写所有正确的它工作正常。

但在第一种情况下请刷新。

以下是脚本

<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src='script/lib/jquery-1.10.2.js'></script>
<script type='text/javascript' src='script/plugin/form-validator/jquery.form-validator.min.js'></script>
<script>
$(document).ready(function(){
    $.validate({
        modules : 'location, date, security, file',             
        borderColorOnError : '#ddd',
        //errorMessagePosition : $messages,
        onModulesLoaded : function() {
            $('#country').suggestCountry();
        }
    });
});

function validate_rgn(){
    $('#registration_form').submit();
    $.validate({
     form : '#registration_form',
     onSuccess : function() { 
         alert('right');
      return false; // Will stop the submission of the form
    },
    });
}
</script>
</head>
<body>
<form action="/registration" method="POST" id="registration_form">
    <p>
        Name (4 characters minimum):
        <input name="user" data-validation="length"
               data-validation-length="min4"/>
    </p>
    <p>
        Year (yyyy-mm-dd):
        <input name="birth" data-validation="date"
               data-validation-format="yyyy-mm-dd"/>
    </p>
    <p>
        Website:
        <input name="website" data-validation="url"/>
    </p>
    <p>
        <input type="button" value="save" onclick="validate_rgn()" />
    </p>
</form>
</body>
</html>

来自http://formvalidator.net

的验证脚本

1 个答案:

答案 0 :(得分:1)

事件处理程序不返回任何内容:

onclick="validate_rgn()"

""之间的函数没有返回语句。您调用另一个函数并忽略返回值。


validate_rgn不会返回false。其中唯一的return语句属于另一个函数,即传递给onSuccess的匿名函数。


表单已提交,因为您调用了$('#registration_form').submit();,没有任何东西可以防止它被解雇。


一个肮脏的解决方案是忘记返回任何内容,只需在$('#registration_form').submit();函数内移动onSuccess

更清洁的解决方案是:

  1. 使用真实的提交按钮
  2. 将事件处理程序绑定到表单的submit事件(而不是按钮的click事件)
  3. 设置验证例程,以便它实际返回(不知道你会怎么做,看起来它是异步的,我会考虑重写它,所以它不是)