Jquery验证引擎: Form submitting Without Validation

标签 jquery jquery-validation-engine ajax-forms

我正在为我的其中一个表单使用 Jquery 验证引擎 (https://github.com/posabsolute/jQuery-Validation-Engine)。验证工作正常,但即使字段值不符合验证,也无法阻止表单提交:

我有一个新闻通讯 Sigunp 表单如下:

<form id="submit-newsletter" method="POST" action="">
   <input type="text" class="searchform validate[required, custom[email]]" value="Enter Your Email" id="email" name="nw-email" onblur="defaultInput(this);" onfocu    s="clearInput(this);" />
   <input type="hidden" id="newsletter" name="newsletter" value="nl" />
   <input type="submit" class="submit" title="Signup" value="Sign Up" name="newsletter-signup" onclick="newsletterSubscribe(event);" />
</form>

该表单通过ajax提交如下:

// Newsletter Subscription Without Refresh

function newsletterSubscribe(e) {
  e.preventDefault();
  var dataString = 'nw-email=' + $('input[name=nw-email]').val() + '&newsletter=' + $('input[name=newsletter]').val();
  $.ajax({
    type: "POST",
    url: "/newsletter/",
    data: dataString,
    success: function () {
      $('#newsletter-box').html('<div id="message"></div>');
      $('#message').html('<img width="18px" height="18px" src="/static/img/smtick.png" /><h5>Thank You !</h5>')
      .append('<p>We have recieved your request. Please Check your mail for activation instructions. You will start recieving our newsletter once you have verified t    his email address.</p>')
      .hide()
      .fadeIn(1200);
      }
  });
  return false;
}

验证触发器如下:

$(document).ready(function() {
  $('#submit-newsletter').validationEngine();
});

现在我可以看到验证错误消息,但如果我按提交按钮,无论该值不是电子邮件地址,都会提交表单。

有什么想法吗?

最佳答案

将代码移动到单击事件处理程序中并使用 jquery 绑定(bind)它。然后使用验证引擎 validate 方法测试您的表单是否有效。

$(function(){
    $('#newsletter-signup').click(function(e){
         e.preventDefault();

         //if invalid do nothing
         if(!$("#submit-newsletter").validationEngine('validate')){
         return false;
          }


      var dataString = 'nw-email=' + $('input[name=nw-email]').val() + '&newsletter=' + $('input[name=newsletter]').val();
      $.ajax({
        type: "POST",
        url: "/newsletter/",
        data: dataString,
        success: function () {
          $('#newsletter-box').html('<div id="message"></div>');
          $('#message').html('<img width="18px" height="18px" src="/static/img/smtick.png" /><h5>Thank You !</h5>')
          .append('<p>We have recieved your request. Please Check your mail for activation instructions. You will start recieving our newsletter once you have verified t    his email address.</p>')
          .hide()
          .fadeIn(1200);
          }
      });
      return false;
    })
});

关于Jquery验证引擎: Form submitting Without Validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845551/

相关文章:

javascript - 尝试让内联验证[func Call] 识别我的函数

jquery - 为什么 CSS 突然不起作用,什么是\u200b?

jquery - Posabsolute 的 jQuery 验证引擎和 CkEditor

c# - 是否可以通过编程方式填写 Ajax 表单?

php - 停止 JQuery 中的动画延迟

javascript - 如何使用 Javascript 更改 Google Chart 中标签的格式类型

javascript - 过滤由 Facebook graph api 提取的 friend 列表(更多的是 JavaScript/Jquery 问题而不是 Facebook API 问题)

javascript - 仅在单击链接时显示文本