isHappy.js在无效时允许ajax调用

我正在抛弃它,希望有人可能发现一个错误,因为我现在已经多次这样做了。 它工作正常大约十分钟,但后来爆发了。

我有一个codeigniter网站,有一个非常简单的联系表格,有3个字段。 我正在使用isHappy.jsvalidation表单,然后发送到服务器。 isHappy.js应该停止AJAX函数,直到表单已经validation,但这部分没有发生。 如果我单击提交按钮而不填写表单,则validation错误会闪烁,但随后会进行ajax调用并提交表单。

inheritance人Javascript:

$(function() { $('#contact-form').isHappy({ fields: { '#email': { required: true, message: 'How can I reach you sans email??' }, '#subject': { required: true, message: 'Can you give me a clue to what you inquiring about please' }, '#body': { required: true, message: 'More details please....' } } }); $('#contact-form').bind('submit', function(e) { e.preventDefault(); var query_params = $('#contact-form').serialize(); $.ajax({ type: 'POST', url: 'http://website.dev:8080/contact/email/ajax', data: query_params, dataType: 'json', success: function(string){ $('#contact-form').fadeOut('medium', function() { $('#linkedin').after("

"+string+"

").fadeIn('medium'); }); } }); }); });

和HTML:

 

根据happy.js文档 ,如果validation失败, 则会发生两件事:

  1. 该领域将获得一个unhappy课程。
  2. 该字段将在它之前得到一个 ,在DOM中有一个unhappyMessage类,并且id为字段的id加上_unhappy

这纯粹是表现性的。 在AJAX调用之前,您必须检查表单是否包含任何unhappy类的输入。

 var is_unhappy = false; $('#contact-form div :input').each( function(i) {  if ( $(this).hasClass('unhappy') ) { is_unhappy = true; return false;  } }); if(!is_unhappy){ //do ajax. } 

没有HTML但无法分辨,但您使用的输入类型是什么? 看起来您正在使用类型为submit的输入标记,您只需将其更改为类型为button的输入标记并绑定到单击 – 然后您的问题就会消失。