• ベストアンサー

【FORM】 リンク文字で submit したい

<FORM METHOD="post" ACTION="tbl_admin.html"> <A HREF="#" onClick="fnc.value='abc'; this.form.submit();">リンク文字</A><BR><BR> <INPUT TYPE="hidden" NAME="fnc" VALUE=""> <INPUT TYPE="submit" VALUE="aaa"> </FORM> と書いてみたのですが エラー:'this.form' は Null またはオブジェクトではありません。 としまいました。 <SELECT>のonChangeで同じような事は出来たのですが、 単なるリンク文字クリックでこのようなことはできないのでしょうか。 可否をご存知の方、また実現方法等ご存知の方 いらっしゃいましたらご教示願います。 よろしくお願い致します。

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

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

#1さんの補足ですが、アンカー(a)要素はformの中に入れても 従属関係にはないので上位のformにアクセスすることはできません。 #1さんの解説ではformにformという名前をつけていますが、 場合によっては名前の競合が発生するのでなるべくタグ名と 同じ名前を使わない方がよいでしょう。 また、allでアクセスするのはあまりお勧めできませんので、 やるならdocument.forms[フォーム名]もしくはdocument.フォーム名 でやるか、nameではなくidをつかってdocument.getElementById(id名) でやるとよいでしょう。 <FORM METHOD="post" ACTION="tbl_admin.html" name="form1"> <A HREF="#" onClick="f=document.form1;f.fnc.value='abc'; f.submit();">リンク文字</A><BR><BR> <INPUT TYPE="hidden" NAME="fnc" VALUE=""> <INPUT TYPE="submit" VALUE="aaa"> </FORM>

Claudia
質問者

補足

なるほど、アンカーはFORMとの従属関係がないから フォームを動かすには外からの場合と同様に 明示的に示さなくてはならないのですね。 勉強になりました。

その他の回答 (1)

回答No.1

エラーの内容からすると「エラー:'this.form' は Null またはオブジェクトではありません。」 ですから、formオブジェクトがちゃんと認識できていないみたいです。 そこで二つ対処をしました。 1)formにnameを付けてdocument.all(フォーム名)でオブジェクトを特定した。 2)<a></a>タグのonclickからなにも返却しないと、hrefパラメータの箇所へ遷移するので、   onclickイベントの戻り値をfalseにした。 サンプルとしては以下です。 ------------- LinkSubmit.html ----------------- <html> <head> <title>リンクサブミットHTML</title> <script language=javascript> </script> </head> <body> <form name=form method="POST" action="./event.html"> <!--<a href='' onclick="fnc.value='abc'; this.form.submit();">リンク文字</a><br><br>--> <a href='#' onclick="document.all('form').fnc.value='abc'; document.all('form').submit();return false;">リンク文字</a><br><br> <input type="hidden" name="fnc" value=""> <input type="submit" value="aaa"> </form> </body> </html> ≪質問は受付中のままにしないで必ず締め切りましょう≫

Claudia
質問者

補足

FORMに名前をつけてフォーム名から指定したら思うように動きました。 いつもフォームの外から弄る時はフォーム名をつけて、 フォーム内でしか弄らないときはフォーム名をつけていなかったもので。。 ありがとうございました。

関連するQ&A

専門家に質問してみよう