• ベストアンサー

フォームの指定

いつもお世話になっております。 早速ですが、呼び出した関数にフォーム名を渡す方法が 判らなく困ってしまってます。 説明より、ソースを見ていただいたほうが 早いと思いますので以下に記述いたします。 function Confirm(msg,formname,submitname) { if (confilm(msg)) { document.formname.submitname.clic(); } } <a href="#" onClick="Confirm('OK','form1','sub1');">テキスト1</a> <a href="#" onClick="Confirm('キャンセル','form2','sub2');">テキスト2</a> <form action='index.html' name='form1'> <input type='submit' name='sub1' value='ok'> </form> <form action='index.html' name='form2'> <input type='submit' name='sub2'> </form> //--------ここまで---------- 上記のスクリプトで、フォーム名やボタン名を Click();関数へ渡したいのですが、 どのように名前を渡すのか判りません。 変数ではなくオブジェクト名だから this.formnameなど試してみたのですが、 頓珍漢なのか、さっぱりでした。 エラーメッセージは "document.formname.submitnameはNullまたはオブジェクトではありません"というメッセージです。 初心者な質問で大変申し訳ありませんが よろしくお願い致します。

  • fichi
  • お礼率38% (24/63)

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

  • ベストアンサー
noname#1785
noname#1785
回答No.1

すいません、上記の質問内容では何をやられたいのかよくわからないのですが、下記の流れでいいですか? 1.リンクをクリックする。 2.アラートを表示 3.formname、submitnameに設定されているフォームをサブミット これでよければ、問題点は 1.function名のConfirmは、関数であり予約語です。  これをfunction名にすることはできません。  名前を変えましょう。 2.フォームにボタンを設置する必要はあるのでしょうか?  見たところ、submitボタンをクリックする、という動作を発生させたいようですね。  それなら直接submitしてしまえばいいのでは? 3.confirmの綴りが間違っています。 4.clickの綴りが間違っています。 問題点を直したソースはこちら。 function chkConfirm(msg,formname,submitname) { if (confirm(msg)) { document.forms[formname].elements[submitname].click(); } } フォームの要素はそれぞれ自動的に連想配列になるので、 forms[フォーム名] という手が使えます。 引数から渡ってきた値で連想配列からそれぞれのform、elementsがとれます。 最後の document.forms[formname].elements[submitname].click(); は、 document.forms[formname].submit(); でも動作は同じです。 # というより、こちらの方が自然ではないかと・・・。 > 変数ではなくオブジェクト名だから > this.formnameなど試してみたのですが、 > 頓珍漢なのか、さっぱりでした。 これはリンクの所にかいたということでしょうか? フォーム要素内のものであれば this.form.name といった形で名前を取ったりフォーム要素の情報を渡したりできますが、リンクはフォーム要素ではないのでthisは使えません。 まずは関数の命名規約や、記述ミスをなくすところから気を付けましょうね。(^^;; がんばってください。

fichi
質問者

お礼

回答ありがとうございます。 行いたいこと全てを説明したいただきました。 submit();はIE以外では使えないと思っていたので あえて避けていましたが、皆さん普通に利用されているのですね。 早速行ってみたところうまく行きました。 ありがとうございます。 記述ミスはソースのほうはOKだったのですが、質問時に間違えているようでは、せっかく回答をくれる方にも迷惑をかけてしまいますね。これから気をつけます。 本当にありがとうございました。

その他の回答 (1)

noname#6248
noname#6248
回答No.2

Submitボタンの動作をアンカーで実行したいのならば以下の方法がありますが… function Confirm(number){ if (number==1){ window.document.form1.submit(); }else{ window.document.form2.submit(); } } <a href="#" onClick="Confirm(1);">テキスト1</a> <a href="#" onClick="Confirm(2);">テキスト2</a> <form action='index.html' name='form1'> <input type='submit' name='sub1' value='ok'> </form> <form action='index.html' name='form2'> <input type='submit' name='sub2'> </form> だめでしょうか?

参考URL:
http://tohoho.wakusei.ne.jp/js/form.htm#submit
fichi
質問者

お礼

ありがとうございます。 submit();を利用したところ うまく行きました。参考URLもブックマークしました。 役立つURLをありがとうございます。

関連するQ&A

  • submit関数の使い方

    javascript部分 function sendform(formname){ document.formname.submit(); } html部分 <form action="test.html" method="post" name="form1"> <input type="text" name="textvalue" value="1"> </form> <a href="javascript:void(0)" onclick="sendform('form1'); return false;">click1</a> <form action="test.html" method="post" name="form2"> <input type="text" name="textvalue" value="2"> </form> <a href="javascript:void(0)" onclick="sendform('form2'); return false;">click2</a> 今は、上記のように書いています。引数でフォーム名を渡し、その値によって送信フォームを変えたいのですがうまくいきません。if文を使って if(formmei=="form1"){ document.form1.submit(); }else if(formmei=="form1"){ document.form2.submit(); } という方法も考えたのですが、フォーム名だけ変えることができないかと考えています。 よろしくお願いします。

  • 変数の記述について教えてください。

    こんにちは。 ご指導のほど、宜しくお願い致します。 javascriptで<form>のname="menu"を変数:formnameに 代入し、実行するように記述をしたいのですが どうもうまくいきません。 誤りの部分を教えて下さい。 <script Language="JavaScript"> <!-- var formname="menu"; // 本登録検索============================================== function itiran_onClick(){ document.+formname+.action" = "itiran.asp"; document.+formname+.submit()"; } ============================================== --> </script> <中省略> <form action="" method="post" name="menu"> <input type="text" name="TEST" value="1"> <input type="bottun" value="次へ" onclick="itiran_onClick()"> </form>

  • FORM1つでリンク

    いつもお世話になっております。 既にある質問も調べてみたのですが <form name="top" method="post" action="xxx.cgi"> <input type = "hidden" name="data" value="open"> <a href="#" onClick="submit();">オープン</a> <input type = "hidden" name="data" value="close"> <a href="#" onClick="submit();">クローズ</a> </form> FORMを1つで、hrefのリンクみたいにして違う値を 送信したいのですが、上記だと 二つ目のリンクが上手く出来ません。 どなたかお知恵をお貸し下さい

  • リンク風sabmitのformをまとめられますか?

    フォームの送信を、リンク風に表示しているのですが、 複数ある場合、フォームタグをまとめることはできるのでしょうか? 下記にHTMLを記載しております。 <form name="word1" method="POST" action="word.php"> <input type="hidden" name="fruit" value="みかん"> </form> <form name="word2" method="POST" action="word.php"> <input type="hidden" name="fruit" value="りんご"> </form>    ・    ・    ・    ・ <form name="word100" method="POST" action="word.php"> <input type="hidden" name="fruit" value="ぶどう"> </form> <a href="javascript:document.word1.submit()">みかん</a> <a href="javascript:document.word2.submit()">りんご</a>    ・    ・    ・    ・ <a href="javascript:document.word100.submit()">ぶどう</a> と、1つ1つ書いていて長すぎると思っていたのですが まとめることは可能なのでしょうか? また、可能であれば、javascript等の知識が必要となるのでしょうか? ご教授宜しくお願い致します。

  • 複数のフォームから送信

    複数のフォームからtextの値を送信したいのですができますか?〒番号を入力して検索ボタンをおすと住所がでてきて最後に登録をしたいです。検索だけのプログラムはできてますがフォームを二つにすると両方のsubmitが登録になります・・・ 一応自分でいろいろためしましたがだめでした。。。 html,php,javascriptです。 二つともだめでした。。。。 rei1.php ------------------------- <html> <body <form method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> <br> <form method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> -------------------------------------- rei2.php -------------------------------------- <html> <head> <script language="javascript"><!-- function send() { document.nform.submit(); document.nform2.submit(); document.nform3.submit(); } //--></script> </head> <body> <form name="nform" method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> </form> <form name="nform2" method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> <form name="nform3" method="POST" action="1.php"> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> ------------------------------------

  • Chromeで複数submit

    現在1つのボタンで2つのフォームをsubmitしているのですがGoogleChromeだけ1正常に動作せず困っております。 下記スクリプトでIE、FireFoxはnform、nform2ともにsubmitされるのですがChromeのみnform2(後に記述したほう)のみ実行されます。 解決方法はありますでしょうか? 宜しくお願い致します。 <script language="javascript"><!-- function send() { if(window.confirm('設定してよろしいですか?')){ document.nform.submit(); document.nform2.submit(); }else{   alert('キャンセルしました'); } } //--></script> <form name="nform" action="a.php" target="blank" method="POST"> <input type="hidden" value="a" name="1"> </form> <form name="nform2" action="b.php" method="POST"> <input type="hidden" value="a" name="1"> </form> <button onClick="send()">ボタン</button>

  • リンクタグについて

    教えてください。 <a>タグからFormを動かしたため下記のような記述を致しました。 この記述では、IE7、Firefoxでは動作するのですが、IE6では動作しません。IE6で動作させるにはどのような記述をすればよいのでしょうか? <a href="javascript:void(0)" onClick="document.frm.submit();">クリック</a> <form method="post" action="#" name="frm"> <input type="text" name="aaa" /> </from>

  • PHPとJavaScriptで...

    PHPで以下のようなリンクを生成し、 <form name="hoge" method="post"> <input type="hidden" name="hogehoge"> </form> <a href="javascript:void(0)" onClick="submit('0')">あ</a> <a href="javascript:void(0)" onClick="submit('1')">い</a> <a href="javascript:void(0)" onClick="submit('2')">う</a> <a href="javascript:void(0)" onClick="submit('3')">え</a> <a href="javascript:void(0)" onClick="submit('4')">お</a> POSTで受け取ったデータを再びPHPで使用したいのですが、 (同一ページ内で) 色々調べてみたのですが、いまいちわかりません。 JavaScriptの部分をどのようにしたらよいか、また根本的に間違っていたらどのように変えればよいか、 教えてください。 m(_ _)m

    • ベストアンサー
    • PHP
  • fileUploadオブジェクトへの値の代入 (困っています。教えてください。m(__)m)

    こんばんは。 fileUploadオブジェクトへの値の代入がどうにもこうにもできません。 いったいどうしたらいいのでしょうか?どうか助けてください。 よろしくお願いいたします。m(__)m -- <HTML><BODY> <FORM NAME="myFormF"> <INPUT TYPE="file" NAME="myFile"> <INPUT TYPE="button" value="set FILEFILE -> file" onClick="document.myFormF.myFile.value='FILEFILE'"> <INPUT TYPE="submit" onClick="alert(document.myFormF.myFile.value)"> </FORM> <FORM NAME="myFormT"> <INPUT TYPE="text" NAME="myText"> <INPUT TYPE="button" value="set TEXTTEXT -> text" onClick="document.myFormT.myText.value='TEXTTEXT'"> <INPUT TYPE="submit" onClick="alert(document.myFormT.myText.value)"> </FORM> </BODY></HTML> -- key: fileUpload object,ファイルアップロードオブジェクト,WSH,javascript

  • onSubmitでフォームの値を変える

    PHP+SQLでサイトを作っています。 いまa.phpでメールアドレスを入力した後、 ”進む”を押すとb.phpにジャンプし、 ”戻る”を押すと$flagの値を変更し、a.php(自分自身)にジャンプするようにしたいと思っています。 一応、ジャンプできるところまではきたのですが、 $flagの値はの値はどのようにすれば、変更できるのでしょうか? <form method="post" > <input type="text" name="mail_address" value=".$mail_address."> <input type="hidden" name="flag" value=".$flag."> <input type="submit" value="戻る" onClick="form.action='a.php'";return ture"> <input type="submit" value="進む" onClick="form.action='b.php'";return ture"> </form>