用按钮打开一个新窗口?

时间:2012-06-14 05:56:48

标签: jquery asp.net-mvc new-window

我需要为我的打印打开一个新窗口,任何人都可以告诉我如何做到这一点吗?

我的按钮点击代码:

我的window.location有效,但无法使用window.open

$('.btnFromIndexPrint').click(function () {
        if (document.URL.indexOf('index') > -1) {
            // window.location = '../Print/' + $(this).attr('id');
            window.open = '../Print/' + $(this).attr('id');
        } else {
           //window.location = 'Contract/Print/' + $(this).attr('id'); //Redirect  from Index page to print action
            window.open = 'Contract/Print/' + $(this).attr('id');
        }

    });

我的HTML

我知道有一种叫做target ="空白"我认为它不会起作用。

<input type="button" value="Print" class="btnFromIndexPrint" id="@item.SalesContractId"/>

如何在新页面上打开重定向?

重要!!!!!!!

return RedirectToAction("Print", new { id = contractInstance.SalesContractId });

4 个答案:

答案 0 :(得分:4)

应该是:

window.open(url_or_your_page);

请参阅:Example

答案 1 :(得分:1)

window.location的语法是

window.location = "url";

例如:

window.location ="http://www.mozilla.org";

因此它在您的代码中正常工作。

window.open()的语法是

window.open(URL, windowName[, windowFeatures])

例如:

window.open ("http://www.javascript-coder.com","mywindow","status=1");

你的语法有问题。

希望这有帮助。

答案 2 :(得分:0)

你应该尝试:

window.open(url, [window name], "height=x,width=y");

指定宽度/高度时,会在新窗口中打开它。请参阅window.open

答案 3 :(得分:0)

首先,我希望您已将上述代码包含在jQuery的document.ready函数中,或将代码放在页面底部。这是因为如果指定的打印按钮尚未加载到DOM中,则选择器($)将找不到它,因此您的点击监听器将不会附加到它。

其次,window.open是一个函数,不应该像变量一样分配(上面已经完成)。换句话说,它是

window.open( parameters ); //NOT window.open = value;

请参阅下面的示例代码,该代码或多或少是对您的修正和优化。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Window.Open</title>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
  <script type="text/javascript">
    //@Author: Prof. No Time
    $(document).ready(function(){
      $('.btnFromIndexPrint').click(function () {
         var urlToOpen = '';
         var docURL = document.URL;

         if (docURL.indexOf('index') > -1) {
            urlToOpen = '../Print/' + $(this).attr('id');
         }
         else {
            urlToOpen = 'Contract/Print/' + $(this).attr('id');
         }

         //alert('urlToOpen > ' + urlToOpen);
         if (urlToOpen != '') window.open(urlToOpen);
      });
   });
  </script>
 </head>

 <body>
    <input type="button" value="Print" class="btnFromIndexPrint" id="@item.SalesContractId"/>
 </body>
</html>

最后,我会建议不要使用上面显示的这种ID(@ item.SalesContractId)。我想相信某个值应该由服务器端处理代替?

希望这有帮助。