题
如果我的用户点击不止一次上的形式的提交按钮时,他基本上发送多个GET / POST请求(取决于首选项形式)。
我发现,禁止使用JS提交按钮是有点问题,因为如果用户试图阻止(ESC /停止按钮),它不重置按钮(除非您捕捉和句柄再次使用JS)中,如果用户从下一个页面回来(返回按钮)时,提交按钮还是禁用(至少在Firefox)。
什么是用于禁用多个表单提交的最佳实践。
谢谢!
解决方案
JavaScript的作品对我很好。确保当用户中止他的提议是可用性的部分按钮(一个或多个)都回启用。
如果你不想使用按钮JavaScript,然后可能在服务器端,你可以在一定的时间跨度赶上重复消息禁用?
其他提示
这可能不是回答你的问题,但我认为,产生独特的识别服务器端请求可能是一个更好的主意的东西。客户端验证始终是个问题。
绑定禁用的表单提交,然后其禁用页面加载(当刷新重置/回):
function disableSubmits( domNode, toDisable )
{
domNode = domNode || document.getElementsByTagName( 'body' )[ 0 ];
toDisable = !!toDisable;
for( var i = 0; i < inputs.length; ++i )
{
if( 'submit' === inputs[i].getAttribute( 'type' ) )
{
inputs[i].disabled = toDisable;
}
}
}
var onloadhandler = function( )
{
var theForm = document.getElementById( 'theForm' );
theForm.onsubmit = function( ){ disableSubmits( theForm, true ); }
disableSubmits( theForm, false );
};
var old = window.onload;
window.onload = 'function' === typeof old
? function( ){ old(); onloadhandler(); }
: onloadhandler;
不隶属于 StackOverflow