1

フォームにテーブル データがあり、各行に動的リンクがあり、新しいウィンドウ (新しいブラウザー タブ) で外部リンクが開きます。これらの行は、動的 ID を持つ n 個の数値です。

ここで必要なのは、ユーザーがテーブルの詳細を送信しようとすると、すべての子ウィンドウを閉じる必要があるということです。子 div がまだ開いている場合、フォームを送信しようとすると、子ウィンドウを閉じるようにアラートが表示されます。

フォームのサンプルDEMOは次のとおりです。

<form>
    <table border="1">
        <tr>
            <td><input type="text" /></td>
            <td>SC1</td>
            <td><a href="http://www.google.com" target="_blank">this is an external link</a></td>

<tr>
            <td><input type="text" /></td>
            <td>SC2</td>
            <td><a href="http://www.google.com" target="_blank">this is an external link</a></td>

            <tr>
            <td><input type="text" /></td>
            <td>SC3</td>
            <td><a href="http://www.google.com" target="_blank">this is an external link</a></td>
</tr>
    </table>
            <input type="submit"  value="submit" />
</form>
4

4 に答える 4

2

開いている各ウィンドウを配列に保存し、ユーザーがフォームを送信しようとしたときに開いているウィンドウのチェックを実行できます。

var windows = [];
$('a').click(function () {
    var myWindow = window.open(this.href);
    windows.push(myWindow);
});

$('form').submit(function () {
    for (var i = 0; i < windows.length; i++) {
        if (!windows[i].closed) {
            alert('Close all windows before continuing');
            return false;
        }
    }
});

デモフィドル

于 2013-08-29T06:21:33.743 に答える
1

開いているウィンドウを追跡し、送信時にそれらを閉じる必要があるようです

var windows = [];
$('a').click(function(){
    var win = window.open($(this).attr('href'),"_blank");
    windows.push(win);
});
$('input[type="submit"]').click(function(){
    if(windows && windows.length > 0)
        $.each(windows,function(index,el){
            el.close();
        });
});

ここにフィドルがありますhttp://jsfiddle.net/JpDhX/4/使用できます

于 2013-08-29T06:21:55.743 に答える