2010-02-27 64 views
1

我有一個非常複雜的表單,驗證工作正常。但是,由於可能需要一段時間才能完成驗證,因此我希望在單擊表單的提交按鈕時使用blockUI來防止混淆和雙重提交。我無法弄清楚如何做到這一點。調用blockUI和unblockUI結合jQuery驗證器插件

我的代碼如下所示:

$("#credential").validate({ 
    rules: { 
       EngId: { 
       required: true 
       } 
      ClientAccount: { 
       required: true 
       } 
       ... 
     } 

和我打電話的幾個按鈕(用他們的點擊功能)驗證取決於選擇的形式,往往禁用某些規則:

$("#buttonname").click(function() { 
    $("#fieldname").rules("remove"); 
    ... 
    $("#credential").submit(); 
}); 

我無法弄清楚的是blockui和unblockui調用會在哪裏進行,這樣當用戶單擊按鈕時,在驗證開始之前,blockui會發揮它的魔力,如果驗證發現問題,則調用unblockui並再次啓用表單。

我是Jquery的新手,我找不到任何能成功實現的例子。我很感謝任何人可以給予的幫助(請原諒,如果這已被覆蓋之前)。

回答

0
$(document).ready(function() { 
    $('#form1').validate({ 
     rules: { 
      fieldone: { required: true }, 
      fieldtwo: { required: true } 
     }, 
     submitHandler: function(form) { 
      $(form).block(); 
      form.submit(); 
     } 
    }); 

    $('input:checkbox[name=toggleone]').click(function() { 
     if ($(this).is(':checked')) { 
      $('input[name=fieldone]').rules('add', { required: true }); 
     } else { 
      $('input[name=fieldone]').rules('remove'); 
     } 
    }); 

    $('#altsubmit').click(function() { 
     $('input[name=fieldtwo]').rules('remove'); 
     $('#form1').submit(); 
    }); 
}); 

put together a page演示與validate,blockui,和動態規則的工作形式。

+0

我試着把它放在那裏,但我在那個區域也有我所有的規則和消息變量,這似乎會導致一個問題。我不知道該把代碼放在哪裏。 – 2010-03-09 21:23:08

+0

感謝您的編輯,但它仍然沒有做任何事情 - 我在您建議的地方添加了submitHandler函數,而且它似乎根本不會被調用。我一定在做別的事情。儘管感謝您的幫助。 – 2010-03-10 22:08:28

+0

使用Firefox和firebug插件並嘗試添加console.log(表單)到submitHandler來檢查它是否被調用。 – h0tw1r3 2010-03-11 15:52:35