表单提交但是在使用button.click时通过表单验证

时间:2012-11-20 10:56:07

标签: jquery html

我正在使用表单验证插件以及html5 attribute = recquired with input type = button或者提交和fancybox.when按钮被点击,两个验证过程工作(空输入的通知出现),但不是此通知,表单提交。

如果我不使用button.click函数但使用简单的submit.then验证工作完美

插件 == HTTP://validatious.org/

javascript功能

   $(document).ready(function() {

    $('#send').click(function() {

    $(this).attr("value", 'Applying...');


    var id = getParam('ID');
    $.ajax({
        type:'POST',
        url:"send.php",



        data:{option:'catapply', tittle:$('#tittle').val(), aud:aud, con:con, adv:adv, mid:$('#mid').val(), aud2:aud, cid:$('#cid').val(), scid:$('#scname option[selected="saa"]').val(), gtt:$('input[name=gt]:radio:checked').val(), sr:$(":input").serialize() + '&aud=' + aud},

        success:function(jd) {
            $('#' + id).fadeOut("fast", function() {
                $(this).before("<strong>Success! Your form has been submitted, thanks :)</strong>");
                setTimeout("$.fancybox.close()", 1000);
            });
        }
    });
  });
 });

AND Html就在这里

      <form id="form2" class="validate" style="display: none" >

        <input  type='button'  value='Apply' id="send" class="sendaf validate_any"                              name="jobforming"/>
     </form>

2 个答案:

答案 0 :(得分:1)

有一个type =“button”而不是一个type =“submit”或者我非常喜欢的,在表单提交而不是点击上运行。 preventDefault(或在函数末尾返回false)将停止正常的表单提交,除非代码中存在语法错误!例如什么是aud和con?

尝试

$(document).ready(function() {

  $("#form2").on("submit",function(e) {
    e.preventDefault(); // stop normal submission

    $('#send').attr("value", 'Applying...');

    var id = getParam('ID');
    $.ajax({
      type:'POST',
      url:"send.php",
      data:{option:'catapply', tittle:$('#tittle').val(), aud:aud, con:con, adv:adv, mid:$('#mid').val(), aud2:aud, cid:$('#cid').val(), scid:$('#scname option[selected="saa"]').val(), gtt:$('input[name=gt]:radio:checked').val(), sr:$(":input").serialize() + '&aud=' + aud},

      success:function(jd) {
        $('#' + id).fadeOut("fast", function() {
          $(this).before("<strong>Success! Your form has been submitted, thanks :)</strong>");
          setTimeout("$.fancybox.close()", 1000);
        });
      }
    });
  });
});

答案 1 :(得分:0)

此解决方案可能适用于您的验证插件。在我看来,即使 mplungjan 答案在大多数情况下都是一个更好的解决方案(听取提交事件而不是点击提交按钮点击)。

$(document).ready(function() {
    $('#send').click(function(e) {

       e.preventDefault();

       $(this).attr("value", 'Applying...');

       var id = getParam('ID');

       $.ajax({
           type:'POST',
           url:"send.php",
           data:{option:'catapply', tittle:$('#tittle').val(), aud:aud, con:con, adv:adv, mid:$('#mid').val(), aud2:aud, cid:$('#cid').val(), scid:$('#scname option[selected="saa"]').val(), gtt:$('input[name=gt]:radio:checked').val(), sr:$(":input").serialize() + '&aud=' + aud},
           success:function(jd) {
               $('#' + id).fadeOut("fast", function() {
                   $(this).before("<strong>Success! Your form has been submitted, thanks :)</strong>");
                   setTimeout("$.fancybox.close()", 1000);
               });
           }
        });
    });
});