みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

submit()の動作について。

<style type="text/css">
.p1{display=none;}
</style>

<script language="JavaScript">
function BtnNone(){
document.btn1.style.display = "none";
document.msg1.style.display = "inline";
document.frm1.submit();
}
</script>
</head>

<form name="frm1" method="post" action="send.cgi">
<div id="btn1">
<input type="text" name="a">
<input type="submit" name="submit" value="SEND" onClick="BtnNone()">
<input type="submit" name="submit" value="BACK">
</div>
<p class="p1" id="msg1">送信中</p>
</form>

-------------------------
主旨が変わったので新しく質問します。
こういうソースで"SEND"をクリックするとボタンが消えて「送信中」のメッセージが表れるのですが、secd.cgiがsubmitされません。
どこが間違っているのでしょうか。

よろしくお願いいたします。

投稿日時 - 2005-01-13 17:33:25

QNo.1166071

困ってます

質問者が選んだベストアンサー

送信されない原因は、ボタンの名前です。
name="submit" としているため、frm1 の submit メソッドがボタンオブジェクト(の配列)として上書きされてしまっています。
そのため、document.frm1.submit() のところで「"submit"というメソッドはない」というエラーが起き、送信されないのです。

ですから、2つのボタンの名前を submit 以外のものにすればよいでしょう。

投稿日時 - 2005-01-14 15:12:11

お礼

なるほど!
解決しました。
ありがとうございました

投稿日時 - 2005-01-14 15:36:50

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

type="submit"が2つあることと
同じ名前になっていることが原因の様な気がします。
別々の名前を付けてみて下さい。
ところで
BACKボタンがsubmit属性なのはそれでいいんでしょうか?
あと、
document.getElementById("btn1").style.display document.getElementById("msg1").style.display
の方がよろしいかと思います。

投稿日時 - 2005-01-13 19:06:01

補足

> type="submit"が2つあることと同じ名前になっていることが原因の様な気がします。

CGIのスクリプトとしては普通に動作します。
二重送信を防ぐためにクリック後ボタンを消す方法を探しているのです。

> BACKボタンがsubmit属性なのはそれでいいんでしょうか?

いいんですよ。

> document.getElementById("btn1").style.display...

試してみましたがsubmit()は動きませんでした。

-------------------------
質問の文章に間違いがありました。
"SEND"ボタンはtype="submit"ではなく"button"にしています。

<input type="button" name="submit" value="SEND" onClick="BtnNone()">

投稿日時 - 2005-01-14 13:01:37

お礼

回答ありがとうございました。

投稿日時 - 2005-01-14 15:37:25

あなたにオススメの質問