表格验证员执行两次

时间:2014-01-19 20:42:29

标签: ajax forms jquery validation

我已经查看了数据库,并没有看到任何评论如何适用于我的情况或者我不是天才足以扩展知识。

我正在使用jQuery Form Validor:formvalidator.net

我的头像这样:

<link rel="stylesheet" href="../plugins/uniform/css/uniform.default.css" type="text/css"/>
<script src="//code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="../plugins/uniform/jquery.uniform.min.js" type="text/javascript"></script>
<!--Monitoring Code-->
<script type="text/javascript" async="async" defer="defer" src="https://chat.banckle.com/chat/visitor.do?dep=72e029a3-64f6-4ffe-b7ea-13c0b3d70a8e"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.1.38/jquery.form-validator.min.js"></script>

<script>
$(function() {
    $('input,button,select,textarea').uniform();
    var myLanguage = {
      errorTitle : 'Please try again...',
      requiredFields : 'You have not answered all required fields',
      badTime : 'You have not given a correct time',
      badEmail : 'You have not given a correct e-mail address',
      badTelephone : 'You have not given a correct phone number',
      badSecurityAnswer : 'You have not given a correct answer to the security question',
      badDate : 'You have not given a correct date',
      lengthBadStart : 'You must give an answer between ',
      lengthBadEnd : ' characters',
      lengthTooLongStart : 'You have given an answer longer than ',
      lengthTooShortStart : 'You have given an answer shorter than ',
      notConfirmed : 'Values could not be confirmed',
      badDomain : 'Incorrect domain value',
      badUrl : 'The answer you gave was not a correct URL',
      badCustomVal : 'You gave an incorrect answer',
      badInt : 'The answer you gave was not a correct number',
      badSecurityNumber : 'Your social security number was incorrect',
      badUKVatAnswer : 'Incorrect UK VAT Number',
      badStrength : 'The password isn\'t strong enough',
      badNumberOfSelectedOptionsStart : 'You have to choose at least ',
      badNumberOfSelectedOptionsEnd : ' answers',
      badAlphaNumeric : 'The answer you gave must contain only alphanumeric characters ',
      badAlphaNumericExtra: ' and ',
      wrongFileSize : 'The file you are trying to upload is too large',
      wrongFileType : 'The file you are trying to upload is of wrong type',
      groupCheckedRangeStart : 'Please choose between ',
      groupCheckedTooFewStart : 'Please choose at least ',
      groupCheckedTooManyStart : 'Please choose a maximum of ',
      groupCheckedEnd : ' item(s)'
    };
    $.validate({
        form: '#contact-form',
        validateOnBlur: false,
        errorMessagePosition: 'top',
        scrollToTopOnError: true,
        language: myLanguage,
        onValidate: function() {
            $('.success-form,.form-error').remove();
        },
        onSuccess : function() {
            function processdata(data,success) {
                if (success) {
                    //document.getElementById('contact-form').reset();
                    //alert(data);
                    if (data=="good") {
                        $('#contact-form').prepend("<div class='success-form'>Your message has been sent. You will receive a response within the next 24 hours--or on the next business day.</div>");
                    } else {
                        $('#contact-form').prepend("<div class='form-error'>Unable to contact Genera Safety Inc at this time. Please try again.</div>");
                    }
                }
            }
            var formdata = $('#contact-form').serialize();
            processdata();
            //alert(formdata);
            $.post('process_contact_form.php',formdata,processdata);
            return false;
        }
    });
});
</script>

表格提交两次?也许这也是两次验证?

有人在这看到任何问题吗?如有必要,我可以提供进一步的信息......

1 个答案:

答案 0 :(得分:1)

提交事件在此处触发两次。我发现你的代码没有任何问题。似乎问题是由jquery.uniform插件引起的。您可以使用以下代码单独测试插件。

<script src="//code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="//rawgithub.com/pixelmatrix/uniform/master/jquery.uniform.min.js" type="text/javascript"></script>

<script>
$(function(){
  $("form").submit(function(e) {
    e.preventDefault();
    console.log("form submit event triggered", Date.now());
  })

  $('input,button,select,textarea').uniform();
});
</script>

<form><input type="submit"/></form>

通过从代码中删除$('input,button,select,textarea').uniform();,我可以避免双重提交问题。