- ベストアンサー
submitボタンを表示することなく、アンカータグでpost伝送する方法
javascriptとphpとの双方または何れか一方を用いることにより、 以下のことを実現する方法を教えて下さい。 〔記〕 「<form>タグを用いてPOST伝送する際に、submitボタンに代えて アンカータグを用いる方法」 なお、submitボタンに相当する<input>タグはhtmlソースに含まれてもよいですが、ブラウザ画面上には表示したくありません。 以上、どうかよろしくお願い致します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
document.allはつかわない方がよいですね formにidをふって <a href="javascript:document.getElementById('myForm').submit();">ほげほげ</a> <form id="myForm" method="post" action="hogehoge.htm"> ・・・ </form> としてみてください
その他の回答 (5)
- yambejp
- ベストアンサー率51% (3827/7415)
質問者さんのやろうとしていることは無謀です。 なにもかも省略してアンカーをクリックしたら自分の思ったフォームが 実行されるわけがありません。idを振る必要があるのはどのフォームを 送るか確定するためなのですから・・・。 それでもなお省略にこだわるのであれば、以下のようなやり方があります。 これは1番目のアンカーに1番目のフォームをわりあてる・・・という やりかたですので、なにかちょっと一個アンカーをいれるだけで ボロボロになり運用方法としてはお勧めしませんがどうしてもというなら 試してみてください。 <script type="text/javascript"> window.onload=function(){ var tags=document.getElementsByTagName("a"); for(var i=0;i<tags.length;i++){ tags[i].href="javascript:document.forms["+i+"].submit()"; } } </script> <a>test1</a> <a>test2</a> <a>test3</a> <form action="./test1.html" method="post"> </form> <form action="./test2.html" method="post"> </form> <form action="./test3.html" method="post"> </form>
お礼
大変お手数をかけました。 ご指摘の通りですね。 確実に動作させるためには、 個々のアンカーに連番等のユニークな識別子を付与して 対処することが一番だと思います。 度々の質問に懇切丁寧に回答頂きありがとうございました。 今後ともよろしくお願い致します。
- leap_day
- ベストアンサー率60% (338/561)
こんにちは こんな感じのやつですか? <script type="text/javascript"><!-- function f(n) { document.getElementsByTagName("form")[n].submit(); } //--></script> <a href="javascript:f('0')";>test1</a> <a href="javascript:f('1')";>test2</a> <a href="javascript:f('2')";>test3</a> <form action="./test1.html" method="post"> </form> <form action="./test2.html" method="post"> </form> <form action="./test3.html" method="post"> </form>
補足
早速ありがとうございます。 そうです。こんな感じです。 できれば、「0」、「1」…のような識別情報なしで できると簡便になるとおもうのですが… 可能でしたら、よろしくお願い致します。
- yambejp
- ベストアンサー率51% (3827/7415)
>submitボタンに相当するアンカータグの数が、 >ページ当たり最大で20個を超えるため、 それはそれぞれ別のフォームをサブミットするのか、 一つのフォームだけなのかによってだいぶ違います
補足
失礼しました。 また、大変お手数をかけてしまい申し訳ありません。 ページ当たり最大で20個となるサブミットの対象は、 何れも「別のフォーム」です。 「これらのフォームに異なるユニークなidを割り付ける処理」 を省いて、同等のことが実現できましたら、 是非教えて頂きたく、よろしくお願い致します。
- redfox63
- ベストアンサー率71% (1325/1856)
ごめんなさい <a href="hogehoge" onclick="document.all["myForm"].submit();">ほげほげ</a> は <a href="hogehoge" onclick="document.all['myForm'].submit();">ほげほげ</a> としてください
お礼
早速教えて頂き、ありがとうございます。 この方法で、実現できました。 今後ともよろしくお願い致します。
- redfox63
- ベストアンサー率71% (1325/1856)
アンカータグの onclickイベントで formタグのsubmitメソッド呼べば良いのでは <form id=myForm> <a href="hogehoge">ほげほげ</a> </form> といったコードなら <form id=myForm> <a href="hogehoge" onclick="document.all["myForm"].submit();">ほげほげ</a> </form> といった具合で ・・・
お礼
ありがとうございます。 先にredfox63さんから教えて頂いた方法と同様に 実現できました。 submitボタンに相当するアンカータグの数が、 ページ当たり最大で20個を超えるため、 もし、さらに省力化して簡便に実現できる方法がありましたら、 是非教えて頂きたく、 よろしくお願い致します。