target_blank适用于两个javascript函数,即使它适用于一个javascript函数

target_blank working for two javascript functions even though it is applied for one javascript function

本文关键字:适用于 javascript 函数 一个 两个 blank target      更新时间:2023-09-26

我有两个javascript函数,如下所示

    <body>
       <script language="javascript">
     function generate(){
                            var table = document.getElementById('my_table'); 
                            var rowCount = table.rows.length;
                            var f = document.form;
                            f.target = "_blank";
                            f.method="post";
                            f.action='ViewPO.jsp?rowCount='+rowCount;
                            f.submit();
                        }
    function generate1(){
                        var table = document.getElementById('my_table'); 
                        var rowCount = table.rows.length;
                        var f = document.form;
                        f.method="post";
                        f.action='purchaseAction.jsp?rowCount='+rowCount;
                       // f.submit();
                    }
<input type="submit" value="Save" onclick="generate1()" />
                            <input type="submit" value="View PO" onclick="generate()"/>

我给了f.target="_blank"一个javascript功能。当我点击"查看PO"按钮时,它会在浏览器的另一个选项卡中打开,这很好。但当我关闭该选项卡并立即点击"保存"时,它也会在浏览器中的另一选项卡中打开。我不需要它,因为它应该在同一选项卡中开启页面。因此,如果有任何帮助,我们将不胜感激。

这是因为调用generate会将formtarget值设置为_blank,所以该值会保存到表单的属性中,因此在调用generate1时会使用相同的目标值。

所以只需重置generate1target属性的值

function generate1() {
  var table = document.getElementById('my_table');
  var rowCount = table.rows.length;
  var f = document.form;
  f.method = "post";
  f.target = "";
  f.action = 'purchaseAction.jsp?rowCount=' + rowCount;
  // f.submit();
}

generate1()函数中添加f.target = "_self";作为

   function generate1(){
                    var table = document.getElementById('my_table'); 
                    var rowCount = table.rows.length;
                    var f = document.form;
                    f.method="post";
                    f.target = "_self";
                    f.action='purchaseAction.jsp?rowCount='+rowCount;
                   // f.submit();
                }

generate()在表单中设置的目标属性被generate1()方法中的表单使用,因此您需要将其重置为默认值_self