2010-11-16 43 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

您的原始方法应该无处不在。