人に聞けない痔の悩み、これでスッキリ >>

複数のSubmitボタンがあり、1つのボタンのみ新しいウインドウで開く

上記について教えてください。

・すべてのsubmitボタンにonclickイベントを付加してイベントに引数を渡し新しく開くか、現在のウインドウで開くかを選択する
という方法でも可能かと思うのですが、新しく開くボタンにのみイベントの記述をしたいと考えています。(現在のウインドウに開くsubmitボタンに手を加えたくない)

そこで、

(1)document.myform.target="_blank";
(2)document.myform.submit();
(3)document.myform.target = "_top"; (その他のボタン用に元に戻す)

のようにしてみたのですが、
(2)document.myform.submit();
で指定のボタンを押させることができないため
document.myform.mySubmitBtn.submit();
のようにすると指定のボタンを押させることが可能なのですが、そうするとその後の
(3)document.myform.target = "_top";
が反映されず、新しいウインドウが開いた後は、すべてのボタンとも新しいウインドウで開かれてしまいます。


何か良い案あればよろしくお願い致します。

A 回答 (3件)

submitのvalueをみて判断してみては?



<script>
try{
document.addEventListener ('click',function(e){clickfunc(e)},true); //基本
}catch(e){
document.attachEvent('onclick',function(e){clickfunc(e)}); //IE
}
function clickfunc(e){
var t = (e.srcElement || e.target);
if(t.nodeName=="INPUT" && t.type=="submit"){
 t.form.target=t.value=="別窓"?"_blank":"";
}
}
</script>
<form>
<input type="text" name="a" value="aaa">
<input type="submit" value="test1">
<input type="submit" value="test2">
<input type="submit" value="test3">
<input type="submit" value="別窓">
</form>
    • good
    • 0
この回答へのお礼

ありがとうございます。参考にさせてもらいます。

お礼日時:2010/11/13 16:43

調べてないけど、タイマーでタイミングをずらして元に戻す処理をしてみては?


onclick="this.form.target='_blank';setTimeout('~.form.target=\'_self\'',1)"
    • good
    • 0
この回答へのお礼

ありがとうございます。参考にさせてもらいます。

お礼日時:2010/11/13 16:43

ボタンの方でセットしてみては?



<input type="submit" value="新しいウインドウで開く" onclick="this.form.target="_blank">

未検証です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
しかしこの方法ですと、target="_blank"と設定されるため、その後別ボタンを押した場合も新しいウインドウで開かれてしまいます。
「このボタンのみ新しいウインドウで開き、その後別ボタンを押したときは元のウインドウで開く」 
という動作にしたいと思っています。

お礼日時:2010/06/27 13:42

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


人気Q&Aランキング