2012-05-25 87 views
1

我做jQuery BlockUI Plugin进行各种形式的触发提交动作:如何防止jQuery的BlockUI从触发

$("form").submit(function() { 
    jQuery.blockUI(); 
}); 

我想验证某些形式提交,才:

<form method="POST" onSubmit="return(confirm('Really submit?'));"> 

当我在确认弹出框中点击“取消”,BlockUI被触发并阻止接口。它永远不会被解锁。
下面是一个例子:http://jsfiddle.net/8B8yA/

问题是如何防止在按下“取消”时触发BlockUI。

我试着加入$.unblockUI()为“取消”的行动:

if(!confirm("Really submit?")) { 
    $.unblockUI(); 
    return(false); 
} 

,但它显然是行不通的,因为之前的程序动作是疏通动作被调用。

回答

2

如何:

$("form").submit(function() { 
    if(!$(this).hasClass('skip')) 
    jQuery.blockUI(); 
});​ 

<html> 
    <head> 
    <script src="http://malsup.github.com/jquery.blockUI.js"> 
    </script> 
    </head> 
    <body> 
    <form method="POST" onSubmit="return (function(form) { var c = confirm('Are you sure?'); if(!c) { $(form).addClass('skip'); } return c; })(this);"> 
     <input type="submit"> 
    </form> 
    </body> 
<html>​ 

参见:http://jsfiddle.net/8B8yA/5/

+1

就是这样。这种技术不仅解决了问题,而且还提供了可重用性。谢谢! – bostaf

+0

非常感谢,请您将此标记为答案?谢谢。 – Gavin

2

你可以尝试删除的onsubmit从形式和做:

$("form").submit(function() { 
    if(confirm('Really submit?')) { 
     jQuery.blockUI(); 
    } 
    else { 
     return; 
    } 
}); 

你的意思是这样:: jsFiddle

您可以添加id来,你需要阻止用户界面,像的形式:

$("#yourFormId").submit(function() { 
     if(confirm('Really submit?')) { 
      jQuery.blockUI(); 
     } 
     else { 
      return; 
     } 
    }); 
+0

号这将使_every_我的形式要求确认提交前。我不想那样。 – bostaf

+0

然后你可以添加一些id到表单并使用$(“#someFormId”)。submit(...)... –

+0

'id'是一个唯一的标识符。想象一个拥有多种形式的页面。一个班会更合适。此外,这并不能解决问题,因为BlockUI将在某些表单上被禁用。我只想在JS确认对话框中按下“取消”时才能阻止它。 – bostaf