2010-02-27 96 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