2012-11-20 47 views
1

我使用表單驗證插件以及html5屬性=使用輸入類型=按鈕或提交和fancybox.when提交recquired,兩個驗證過程都工作空白輸入的通知顯示),但不是通知,而是提交表單。當使用button.click時,通過表單驗證通過表單提交

如果我不使用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); 
      }); 
     } 
    }); 
    }); 
}); 

和HTML是這裏

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

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

嘗試使用'

回答

1

有一個類型=「按鈕」,而不是一個類型=「提交」,或者我非常喜歡,在表單提交上運行而不是在點擊上運行。 preventDefault(或在函數結尾處返回false)將停止正常的表單提交,除非代碼中存在語法錯誤!例如什麼是審計和控制?

嘗試

$(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); 
     }); 
     } 
    }); 
    }); 
}); 
+0

他應該使用提交按鈕,防止提交。 – rayfranco

+0

@rayfranco現在形成html5屬性的作品,但插件功能是bypasse –

+0

@CutyPie請參閱更新的評論,並在控制檯中看看錯誤 – mplungjan

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); 
       }); 
      } 
     }); 
    }); 
}); 
+0

仍然繞過插件驗證 –

+0

似乎Validatious沒有可靠的API來處理我們自己的提交事件。你有沒有想過用Ajax表單提交的替代方案? – rayfranco

+0

@CutyPie例如,庫validate.js似乎更「低級」,但允許您在插件驗證後自行回調。你可以在那裏添加你的$ .ajax – rayfranco