0

我使用 formvalidation.io 库来验证脚本中的数据。它在进行正常的页面提交时工作得很好,但是当我选择使用 jquery 并序列化来提交它两次时。这可以在博客以及提交时发送的 2 封电子邮件中看到。如果我从 javascript 中注释掉 formvalidation,它会发布一次。我尝试重新组织和重新排列 javascript 无济于事。相关代码:

$(document).ready(function() {

  /* FORM-VALIDATION */
  $('#ContactForm').formValidation({
    framework: 'bootstrap',
    icon: {
      valid: 'glyphicon glyphicon-ok',
      invalid: 'glyphicon glyphicon-remove',
      validating: 'glyphicon glyphicon-refresh'
    },
    fields: {
      'fname': {
        validators: {
          notEmpty: {
            message: 'The first name is required'
          },
          stringLength: {
            min: 2,
            max: 40,
            message: 'First name must be at least 2 characters long'
          }
        }
      },
      'lname': {
        validators: {
          notEmpty: {
            message: 'The last name is required'
          },
          stringLength: {
            min: 2,
            max: 40,
            message: 'First name must be at least 2 characters long'
          }
        }
      },
      'email': {
        validators: {
          notEmpty: {
            message: 'The email address is required'
          },
          emailAddress: {
            message: 'The input is not a valid email address'
          }
        }
      },
      'message': {
        validators: {
          notEmpty: {
            message: 'Message text is required'
          },
          stringLength: {
            min: 10,
            max: 1000,
            message: 'Your message must be between 10 and 1000 characters in length.'
          }
        }
      }
    }
  })
  /* FORM-VALIDATION */

  /* SERIALIZE & SUBMIT FORM */
  $(function() {
    var form = $('#ContactForm');
    var formMessages = $('#form-messages');
    $(form).submit(function(e) {
      e.preventDefault();
      var formData = $(form).serialize();
      $("#Result").html( "" );
      $.ajax({
        type: 'POST',
        url: $(form).attr('action'),
        data: formData,
        success: function(html) { $("#Result").html( html ); }
      });
    });
  });
  /* SERIALIZE & SUBMIT FORM */

});

您可以在以下位置查看现场演示: http: //www.dottedi.biz/demo/code/public/serialize+formvalidation/

4

1 回答 1

0

我将 SERIALIZE 代码更改为以下内容,现在可以正常工作:

/* SERIALIZE & SUBMIT FORM */
.on('success.form.fv', function(e) {
  var form = $('#ContactForm');
  var formMessages = $('#form-messages');
  $(form).submit(function(e) {
    e.preventDefault();
    var formData = $(form).serialize();
    $("#Result").html( "" );
    $.ajax({
      type: 'POST',
      url: $(form).attr('action'),
      data: formData,
      success: function(html) { $("#Result").html( html ); }
    });
  });
});
/* SERIALIZE & SUBMIT FORM */
于 2018-04-04T17:24:48.823 回答