FireFoxのバグ?button.disable=trueで送信されない2006年04月21日 23:57

Formの2重送信を避けるため、

<script>
<!---
function xSubmit&#40;button) {
button.disabled = true;
document.Form.submit&#40;);
}
->
</script>

<form name="Form">
<button name="order2" type="button" onclick="xSubmit&#40;this)">注文する</button>
<input type="hidden" name="order" value="order">
</form>

のようなスクリプトを使っています。
IE,OperaやMozilla(FireFoxの前身)では問題なく動作しました。

ところが、 FireFoxでこれを使うと submitされないんです!!

document.Form.submit&#40;);
button.disabled = true;

と順番を入れ替えてもだめ。

button.disabled = true;
document.Form.submit&#40;);
button.disabled = false;

は動きます。
FireFoxはsubmit&#40;)処理がスクリプトの後から実行され、
そのときに呼び出したFormのボタンの状態を見て処理をしているようです。
何でこんな仕様になっているの?

回避方法

<form name="ButtonForm">
<button name="order2" type="button" onclick="xSubmit&#40;this)">注文する</button>
</form>
<form name="Form">
<input type="hidden" name="order" value="order">
</form>

こんな風にFormをJavaScript実行用と送信用と別のFormにすれば
動作します。

または、この例では全部のボタンを使用不可にしていますが、
document.Form.order2.disabled = ture;
のようにそのボタンだけdisabledにしても動作します。