2012-12-20 68 views
0

我使用了bassistance驗證插件,並有一個捕獲第二個提交按鈕(稱爲預覽)並通過ajax將數據發送到fancybox的小腳本。我想在發送到fancybox之前驗證表單。目前他們只驗證,如果我通過提交按鈕發送表單。我嘗試了各種方式(例如,我直接在if之後提出了驗證請求),但無法實現。也許有一種方法可以讓驗證者知道它也應該反應,當預覽按鈕被擊中時?在發送到fancybox之前驗證(阻止)

我的代碼:

 $(function() { 
      $('#myform *').tooltip(); 
      $('#myform ').validate(); 
      }); 

     $(document).ready(function(){ 
      $(':submit').click(function(){ 
       for (var i in CKEDITOR.instances){ 
       CKEDITOR.instances[i].updateElement(); 
       } 
      var value = $(this).attr("id"); 
      if (value == 'preview') { 
       $.fancybox.showLoading(); 
       $.ajax({ 
        type : "POST", 
        cache : false, 
        url  : "../mypath/", 
        data : $('#myform').serializeArray(), 
        success : function(data) { 
         $.fancybox(data, { 
         'minWidth': '100%', 
         'minHeight': '100%', 
          }); 
         } 
        }); 
        return false; 
      } 
     }); 
    }); 

回答

3

,如果我沒有錯,Bassistance驗證插件依賴於一個事實,如果你提交一個表單,並要求沒有得到滿足,該函數返回一個「假」在該提交中,使您能夠直觀地查看所做的錯誤。在你的源代碼中,你正確地初始化了你的代碼的開始處的Bassistance校驗器插件(我假設你直接在輸入字段上爲它創建了規則,例如minlength =「2」),但是有一個問題:提交按鈕的SUBMIT事件沒有掛鉤,但僅限於該按鈕上的CLICK事件。

還有就是Bassistance網站上的一個簡單的例子,顯示瞭如何使用自定義的事件提交該插件:

http://jquery.bassistance.de/validate/demo/ajaxSubmit-intergration-demo.html

基本上,你需要做的是插入的智能部分的代碼到

jQuery("#yourform").validate({ 
    submitHandler: function(form) { 
     jQuery(form).ajaxSubmit({ 
      /* 
       Here you can do the following: 
       1) Update the instances of CKEDITOR 
       2) Check if the submit is in the preview mode 
       3) If yes 
        - do your fancy stuff 
        - return false so that the real submit is not triggered 
        If not 
        - return true so that the real submit handler is evaluated by the browser and the POST is triggered 
      */ 

     }); 
    } 
}); 
相關問題