• ベストアンサー

submitボタンを表示することなく、アンカータグでpost伝送する方法

javascriptとphpとの双方または何れか一方を用いることにより、 以下のことを実現する方法を教えて下さい。 〔記〕 「<form>タグを用いてPOST伝送する際に、submitボタンに代えて アンカータグを用いる方法」 なお、submitボタンに相当する<input>タグはhtmlソースに含まれてもよいですが、ブラウザ画面上には表示したくありません。 以上、どうかよろしくお願い致します。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

document.allはつかわない方がよいですね formにidをふって <a href="javascript:document.getElementById('myForm').submit();">ほげほげ</a> <form id="myForm" method="post" action="hogehoge.htm"> ・・・ </form> としてみてください

tfj3116
質問者

お礼

ありがとうございます。 先にredfox63さんから教えて頂いた方法と同様に 実現できました。 submitボタンに相当するアンカータグの数が、 ページ当たり最大で20個を超えるため、 もし、さらに省力化して簡便に実現できる方法がありましたら、 是非教えて頂きたく、 よろしくお願い致します。

その他の回答 (5)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.6

質問者さんのやろうとしていることは無謀です。 なにもかも省略してアンカーをクリックしたら自分の思ったフォームが 実行されるわけがありません。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>

tfj3116
質問者

お礼

大変お手数をかけました。 ご指摘の通りですね。 確実に動作させるためには、 個々のアンカーに連番等のユニークな識別子を付与して 対処することが一番だと思います。 度々の質問に懇切丁寧に回答頂きありがとうございました。 今後ともよろしくお願い致します。

  • leap_day
  • ベストアンサー率60% (338/561)
回答No.5

こんにちは こんな感じのやつですか? <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>

tfj3116
質問者

補足

早速ありがとうございます。 そうです。こんな感じです。 できれば、「0」、「1」…のような識別情報なしで できると簡便になるとおもうのですが… 可能でしたら、よろしくお願い致します。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

>submitボタンに相当するアンカータグの数が、 >ページ当たり最大で20個を超えるため、 それはそれぞれ別のフォームをサブミットするのか、 一つのフォームだけなのかによってだいぶ違います

tfj3116
質問者

補足

失礼しました。 また、大変お手数をかけてしまい申し訳ありません。 ページ当たり最大で20個となるサブミットの対象は、 何れも「別のフォーム」です。 「これらのフォームに異なるユニークなidを割り付ける処理」 を省いて、同等のことが実現できましたら、 是非教えて頂きたく、よろしくお願い致します。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

ごめんなさい <a href="hogehoge" onclick="document.all["myForm"].submit();">ほげほげ</a> は <a href="hogehoge" onclick="document.all['myForm'].submit();">ほげほげ</a> としてください

tfj3116
質問者

お礼

早速教えて頂き、ありがとうございます。 この方法で、実現できました。 今後ともよろしくお願い致します。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

アンカータグの onclickイベントで formタグのsubmitメソッド呼べば良いのでは <form id=myForm> <a href="hogehoge">ほげほげ</a> </form> といったコードなら <form id=myForm> <a href="hogehoge" onclick="document.all["myForm"].submit();">ほげほげ</a> </form> といった具合で ・・・

関連するQ&A