dポイントプレゼントキャンペーン実施中!

form タグに
オプションとして存在する target に関してです。

form method="POST" action="***.cgi" target="new"

と記述すればsubmit実行時に結果を別ウィンドウに転送します
ここまではいいのでが・・・・

submitボタンが複数ある場合(ボタンによって処理が違う)
ボタンによって、このボタンは新しいウィンドウを開くが、
このボタンは開かない(同一ウィンドウ内に結果表示する)
というように設定することはできますか?

CGIとJavaSCRIPTの利用は可能です。
やはり別の form を立てるしかないのでしょうか?
(cgiに渡す値が大量なため一つのformで実現したいとおもっています)

A 回答 (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してしまうようなバグがあったらオワリなんですが・・・動くみたいなので大丈夫でしょう。

この回答への補足

>この場合、ブラウザにJavaScriptの動作終了を待たずにsubmitしてしまうようなバグがあったらオワリなんですが・・・

そうですね。このあたり不安が残ります。
これはブラウザの問題になるのでしょうか?
とりあえず動いたのでいいとさせて頂きます。
この点の問題が発生したらまた質問させていただきます。

みなさま ありがとうございました。

補足日時:2001/09/04 14:17
    • good
    • 0

はじめまして。


他の方の通りですが・・一応までに。

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で確認済み

頑張って下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。

対応ブラウザの記述までしていただいて感謝感激です。

お礼日時:2001/09/04 14:24

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();
でできそうですね。
ありがとうございますやってみます。

補足日時:2001/09/04 12:59
    • good
    • 0

formのNAME属性はformsとして記述します。



複数のsubmitボタンというのを、buttonにして、JavaScriptを走らせ、
その中で
document.forms.target = "_self"
とか、
document.forms.target = "_blank"
とか指定してから
document.forms.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値が渡されません。
何が変なのでしょう??

補足日時:2001/09/04 13:27
    • good
    • 0
この回答へのお礼

1.は解消されました。
JAVASCRIPTのIF構文は
IF(a==B) のように "=="なのですね。

2.に関しては
相変わらず value値がわたりません。
やっぱり submitですればいいのでしょうか?

お礼日時:2001/09/04 14:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!