2012-05-25 88 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