1

我在表格中有一个表格数据,每一行都有一个动态链接,可以在新窗口(新的浏览器选项卡)中打开一个外部链接。这些行在 n 个数字中,具有动态 ID。

我需要的是,当用户尝试提交表格详细信息时,他们必须关闭所有子窗口。如果任何子 div 仍然打开并且他尝试提交表单,它应该发出警报以关闭子窗口

这是表单的示例演示

<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 回答
0

有一个 js 函数调用window.open()来创建新窗口。跟踪创建的引用。

此外,您在演示中提供的代码不保证链接会在新窗口中打开。

相关小提琴 http://jsfiddle.net/DS83p/

于 2013-08-29T06:10:14.447 回答
0
1.Instead of <a href> use onclick javascript:window.open.
2.Give title to the window.
3.For closing
  if (document.title === "the title you want") {
    window.close();
  }
4.Give the above code in button Click.
于 2013-08-29T06:11:22.877 回答