isHappy.js让Ajax调用时无效(isHappy.js allowing ajax call

2019-09-23 02:13发布

我的希望,因为我已经过这样很多次,现在有人可能会看到一个错误引发此了。 这是工作的罚款约十分钟但随后破了。

我有一个笨网站与3场一个非常简单的接触形式。 我使用isHappy.js验证表单,然后关闭发送到服务器。 直到形式已经验证了,但这部分没有发生isHappy.js应停止AJAX功能。 如果我点击提交按钮没有填写验证错误闪烁起来的形式,但随后在Ajax调用是由和形式提交。

继承人的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("<div style=\"clear:both;\" /><div id=\"contact-complete\" stlye=\"width:100%;height:200px;\"><h1>"+string+"</h1></div>").fadeIn('medium');        
                        });                                                             
                    }

                });
    });     
}); 

和HTML:

<form action="http://website.dev:8080/contact/email" method="post" accept-charset="utf-8" id="contact-form">        
<div class="contact-input">
    <input type="text" name="email" id="email" placeholder="Your email" value="" />
</div>
<div class="contact-input">
    <input type="text" name="subject" id="subject" placeholder="Subject" value="" />
</div>
<div class="contact-textarea">
    <textarea rows="10" placeholder="How can I help you?" name="body" id="body"></textarea>
</div>
<input type="submit" value="Send" id="contact-click" />

Answer 1:

按照happy.js文档 ,如果验证失败,发生两件事情:

  1. 本场会得到一个unhappy类。
  2. 本场会得到一个<span>前右等,同一个类的DOM unhappyMessage和ID任何领域的ID是加_unhappy

这是纯粹的表象。 你必须检查的形式不包含任何输入unhappy你的AJAX调用之前类。

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.
}


Answer 2:

不能说没有的HTML,但你使用的是什么类型的输入? 它看起来像您正在使用类型的输入标签提交,你可以只将其更改为类型按钮和绑定的输入标签点击 - 那么你的问题就会消失。



文章来源: isHappy.js allowing ajax call when not valid