FireFoxのバグ?button.disable=trueで送信されない ― 2006年04月21日 23:57
Formの2重送信を避けるため、
<script>
<!---
function xSubmit(button) {
button.disabled = true;
document.Form.submit();
}
->
</script>
<form name="Form">
<button name="order2" type="button" onclick="xSubmit(this)">注文する</button>
<input type="hidden" name="order" value="order">
</form>
のようなスクリプトを使っています。
IE,OperaやMozilla(FireFoxの前身)では問題なく動作しました。
ところが、 FireFoxでこれを使うと submitされないんです!!
document.Form.submit();
button.disabled = true;
と順番を入れ替えてもだめ。
button.disabled = true;
document.Form.submit();
button.disabled = false;
は動きます。
FireFoxはsubmit()処理がスクリプトの後から実行され、
そのときに呼び出したFormのボタンの状態を見て処理をしているようです。
何でこんな仕様になっているの?
回避方法
<form name="ButtonForm">
<button name="order2" type="button" onclick="xSubmit(this)">注文する</button>
</form>
<form name="Form">
<input type="hidden" name="order" value="order">
</form>
こんな風にFormをJavaScript実行用と送信用と別のFormにすれば
動作します。
または、この例では全部のボタンを使用不可にしていますが、
document.Form.order2.disabled = ture;
のようにそのボタンだけdisabledにしても動作します。
<script>
<!---
function xSubmit(button) {
button.disabled = true;
document.Form.submit();
}
->
</script>
<form name="Form">
<button name="order2" type="button" onclick="xSubmit(this)">注文する</button>
<input type="hidden" name="order" value="order">
</form>
のようなスクリプトを使っています。
IE,OperaやMozilla(FireFoxの前身)では問題なく動作しました。
ところが、 FireFoxでこれを使うと submitされないんです!!
document.Form.submit();
button.disabled = true;
と順番を入れ替えてもだめ。
button.disabled = true;
document.Form.submit();
button.disabled = false;
は動きます。
FireFoxはsubmit()処理がスクリプトの後から実行され、
そのときに呼び出したFormのボタンの状態を見て処理をしているようです。
何でこんな仕様になっているの?
回避方法
<form name="ButtonForm">
<button name="order2" type="button" onclick="xSubmit(this)">注文する</button>
</form>
<form name="Form">
<input type="hidden" name="order" value="order">
</form>
こんな風にFormをJavaScript実行用と送信用と別のFormにすれば
動作します。
または、この例では全部のボタンを使用不可にしていますが、
document.Form.order2.disabled = ture;
のようにそのボタンだけdisabledにしても動作します。
最近のコメント