2010-11-16 47 views
2

是否安全 - 在一個表單的提交事件處理程序中 - 提交另一個表單並返回false以防止提交第一個表單?防止一個表單提交併提交另一個表單 - 此方法是否可靠?

$("#form1").submit(function() { 
    $("#form2").submit(); 
    return false; 
}); 

我正在使用這種方法,它的工作原理(至少在IE6中)。但是,我擔心這可能無法在其他瀏覽器中使用。撥打submit能否以某種方式取消return false

我正在考慮的另一種方法是

$("#form1").submit(function() { 
    setTimeout('$("#form2").submit();', 10); 
    return false; 
}); 

....但是這很可能是增加地方實際需要沒有複雜性。

需要做這件事的原因是用戶提交form1,但在某些情況下(我可以使用JavaScript檢測到),這導致了一個錯誤,可以通過設置一些數據在一個form2的字段,然後提交此表單。

+1

如果禁用Javascript會怎麼樣? – spender 2010-11-16 11:26:21

+0

如果JavaScript被禁用,那麼用戶無論如何都不能使用這個網站。 – 2010-11-16 11:31:03

回答

3

您的代碼應該在所有的瀏覽器,但如果你要絕對確保你可以做

$("#form1").submit(function(evt) { 
    evt.preventDefault(); // cancel the default behavior 
    $("#form2").submit(); 
    return false; 
}); 

使用.preventDefault()方法確保您之前取消默認行爲做的事情可能會干擾它..

+0

'return false'會導致jQuery執行'.preventDefault()'部分。 – jwueller 2010-11-16 11:36:17

+1

@elusive,我知道。但是,如果提交發生在「返回false」之前,OP會擔心可能會干擾該操作。它可以**不**,但我只是指出一種讓憂慮放鬆的選擇(*我希望*) – 2010-11-16 11:39:11

1

您的原始方法應該無處不在。