• ベストアンサー

form の target(

form タグに オプションとして存在する target に関してです。 form method="POST" action="***.cgi" target="new" と記述すればsubmit実行時に結果を別ウィンドウに転送します ここまではいいのでが・・・・ submitボタンが複数ある場合(ボタンによって処理が違う) ボタンによって、このボタンは新しいウィンドウを開くが、 このボタンは開かない(同一ウィンドウ内に結果表示する) というように設定することはできますか? CGIとJavaSCRIPTの利用は可能です。 やはり別の form を立てるしかないのでしょうか? (cgiに渡す値が大量なため一つのformで実現したいとおもっています)

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

  • ベストアンサー
  • sight
  • ベストアンサー率53% (199/370)
回答No.4

>新しいウィンドウは target="new" を使っています。 この場合、newという名前がついたwindowが新たに開かれますよね。 もう一度newをtargetとしたページを開いた場合、さっき開いたnewウィンドウに読み込まれます。 targetにはいくつか特別な値を入れることができます。 _blank  名前未設定の「新しい」ウィンドウを開きます。10回やれば10個新しいウィンドウが開きます。 _self   自分自身のウィンドウをターゲットとします。(フレームならフレーム) _parent  フレーム構造の場合、自分自身の一つ上のフレームセットを解除してターゲットとします _top   フレーム構造の場合、(階層が深くても)全部解除してターゲットとします。 >☆結果 >1.両方ともに新しいウィンドウが立ちあがります。 if文が間違っています。re=1という記述は代入ですので、条件判断としては・・・。 >2.buttonのvalue値が渡されません。 type="button"は送られないようですね。buttonの名前&値がほしい場合はNo.3の方が かかれているようにsubmitにonClickを使う形になりますか。 この場合、ブラウザにJavaScriptの動作終了を待たずにsubmitしてしまうようなバグがあったらオワリなんですが・・・動くみたいなので大丈夫でしょう。

noname#1802
質問者

補足

>この場合、ブラウザにJavaScriptの動作終了を待たずにsubmitしてしまうようなバグがあったらオワリなんですが・・・ そうですね。このあたり不安が残ります。 これはブラウザの問題になるのでしょうか? とりあえず動いたのでいいとさせて頂きます。 この点の問題が発生したらまた質問させていただきます。 みなさま ありがとうございました。

その他の回答 (3)

  • Kizz
  • ベストアンサー率47% (30/63)
回答No.3

はじめまして。 他の方の通りですが・・一応までに。 Javascriptによるtarget先設定で対応可能となります。 ◇HTML  例)  <input type="submit" value="ボタン1" onClick="javascript:target_func(0)">  <input type="submit" value="ボタン2" onClick="javascript:target_func(1)"> ◇Javascript function target_func( mode ) { if( mode == 0 ) document.フォーム名.target="_top"; else document.フォーム名.target="_blank"; return true; } 上記の例では、   ボタン1→現ブラウザのトップ        ※現ページがフレームが切られているページでも、actionにて表示         されるページが一面に表示される(_top)   ボタン2→新しいウインドウを表示(_blank) なお、これはIEでもNetscapeでも有効です。 ※Windows で 5.5/4.7で確認済み 頑張って下さい。

noname#1802
質問者

お礼

ありがとうございます。 対応ブラウザの記述までしていただいて感謝感激です。

noname#1785
noname#1785
回答No.2

formに名前は付けているんでしょうか? もし付けているのでしたら、 document.フォームの名前.target="新しいターゲット先" document.フォームの名前.submit(); で、実行可能です。 もしname属性を付けていないのであれば、配列として考えます。 formタグが一つしかなければ、 document.forms[0].target="新しいターゲット先" document.forms[0].submit(); で、アクセス可能です。 配列の場合、0オリジンになりますので、複数formタグがある場合は、0から順番に数えてください。

noname#1802
質問者

補足

submitボタンに send(1), send(0) などを呼びだし (onClickでいいのでしょうね?) send() の引数(0 or 1)によって terget の設定、ならびに submit(); でできそうですね。 ありがとうございますやってみます。

  • sight
  • ベストアンサー率53% (199/370)
回答No.1

formのNAME属性はformsとして記述します。 複数のsubmitボタンというのを、buttonにして、JavaScriptを走らせ、 その中で document.forms.target = "_self" とか、 document.forms.target = "_blank" とか指定してから document.forms.submit() したらいかがでしょう??

noname#1802
質問者

お礼

1.は解消されました。 JAVASCRIPTのIF構文は IF(a==B) のように "=="なのですね。 2.に関しては 相変わらず value値がわたりません。 やっぱり submitですればいいのでしょうか?

noname#1802
質問者

補足

_self というのは 今ひらかれているウィンドウの名前になるのでしょうか? (SCRIPTを記述する側のウィンドウ) 新しいウィンドウは target="new" を使っています。 ☆formを以下に変更 target="new"を削除 ☆submitを以下に変更 input type="button" name="B1" value="送信" onClick="send(i)" (i は 0か1 になります) ☆SCRIPT追加 function send(re) { if(re=1) document.forms[0].target="new"; if(re=0) document.forms[0].target="_self"; documet.forms[0].submit(); } ☆結果 1.両方ともに新しいウィンドウが立ちあがります。 2.buttonのvalue値が渡されません。 何が変なのでしょう??

関連するQ&A