- ベストアンサー
form の target(
form タグに オプションとして存在する target に関してです。 form method="POST" action="***.cgi" target="new" と記述すればsubmit実行時に結果を別ウィンドウに転送します ここまではいいのでが・・・・ submitボタンが複数ある場合(ボタンによって処理が違う) ボタンによって、このボタンは新しいウィンドウを開くが、 このボタンは開かない(同一ウィンドウ内に結果表示する) というように設定することはできますか? CGIとJavaSCRIPTの利用は可能です。 やはり別の form を立てるしかないのでしょうか? (cgiに渡す値が大量なため一つのformで実現したいとおもっています)
- みんなの回答 (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してしまうようなバグがあったらオワリなんですが・・・動くみたいなので大丈夫でしょう。
その他の回答 (3)
- Kizz
- ベストアンサー率47% (30/63)
はじめまして。 他の方の通りですが・・一応までに。 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で確認済み 頑張って下さい。
お礼
ありがとうございます。 対応ブラウザの記述までしていただいて感謝感激です。
formに名前は付けているんでしょうか? もし付けているのでしたら、 document.フォームの名前.target="新しいターゲット先" document.フォームの名前.submit(); で、実行可能です。 もしname属性を付けていないのであれば、配列として考えます。 formタグが一つしかなければ、 document.forms[0].target="新しいターゲット先" document.forms[0].submit(); で、アクセス可能です。 配列の場合、0オリジンになりますので、複数formタグがある場合は、0から順番に数えてください。
補足
submitボタンに send(1), send(0) などを呼びだし (onClickでいいのでしょうね?) send() の引数(0 or 1)によって terget の設定、ならびに submit(); でできそうですね。 ありがとうございますやってみます。
- sight
- ベストアンサー率53% (199/370)
formのNAME属性はformsとして記述します。 複数のsubmitボタンというのを、buttonにして、JavaScriptを走らせ、 その中で document.forms.target = "_self" とか、 document.forms.target = "_blank" とか指定してから document.forms.submit() したらいかがでしょう??
お礼
1.は解消されました。 JAVASCRIPTのIF構文は IF(a==B) のように "=="なのですね。 2.に関しては 相変わらず value値がわたりません。 やっぱり submitですればいいのでしょうか?
補足
_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値が渡されません。 何が変なのでしょう??
補足
>この場合、ブラウザにJavaScriptの動作終了を待たずにsubmitしてしまうようなバグがあったらオワリなんですが・・・ そうですね。このあたり不安が残ります。 これはブラウザの問題になるのでしょうか? とりあえず動いたのでいいとさせて頂きます。 この点の問題が発生したらまた質問させていただきます。 みなさま ありがとうございました。