按下按钮进行打印后,将焦点放在另一个按钮上

时间:2016-10-01 14:43:43

标签: javascript asp.net client-side

我有一个按钮,用于打印目的。我希望在按下打印按钮后,焦点转到另一个按钮。但我的代码不起作用。

我从firebug获得的错误TypeError: document.getElementById(...) is null。 打印过程已成功完成,但在打印后,焦点不会转到" btn_CR "按钮。

如何在打印过程之后制作,重点放在" btn_CR "按钮。 我是否需要编写服务器端脚本或者这可以通过javascript处理?请帮帮我

我的aspx代码::

<asp:Content ID="AdminContent" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:Panel ID="print_Client_registration" Visible="false" runat="server">
        <div id="printIt">            
            <div style="width: 260px;font-family:Arial,Helvetica, sans-serif;">
                <div style="text-align: center; width: 100%; font-size: 15px;"><b>
                    <asp:Label ID="lblClientId" runat="server" /></b></div>
                <div style="text-align: left; width: 100%; font-size: 13px;"><b>Name:</b>
                    <asp:Label ID="lblName" runat="server" /></div>
            </div>
        </div>            
        <asp:Button ID="btn_print" runat="server" ClientIDMode="Static" Text="Print" OnClientClick="printPage();"/>        
        <div>
            <table class="nostyle">
                <tr>
                    <td><input type="button" id="btn_CR" runat="server" value="Client Register" onclick="window.location.href = 'NewClientRegister.aspx'" /></td>

                </tr>
            </table>
        </div>
    </asp:Panel>
    <script type="text/javascript">
        var NextFocusButtonId = <%=btn_CR.ClientID%>;
    </script>
    <script type="text/javascript" src="../scripts/print.js"></script> 
</asp:Content>

printPage()函数在外部&#34; print.js&#34;文件

function printPage() {
    var headstr = "<html><head><title></title></head><body>";
    var footstr = "</body>";
    var newstr = document.getElementById("printIt").innerHTML;
    var oldstr = document.body.innerHTML;
    document.body.innerHTML = newstr;
    window.print();
    document.body.innerHTML = oldstr;
    document.getElementById('<%=btn_CR.ClientID%>').focus();
}

根据建议我更改了代码

document.getElementById('<%=btn_CR.ClientID%>').focus();

document.getElementById('btn_CR').focus(); 但仍然得到相同的错误TypeError: document.getElementById(...) is null

2 个答案:

答案 0 :(得分:1)

您无法在 aside.affix { top: 0; } 文件中使用内联表达式var $scrollHeight = $ ( '#main-nav').outerHeight ( true ); $ ( 'aside' ).affix ({ offset: { top: $scrollHeight } }); $ ( 'aside' ).one ( 'affix.bs.affix', function ( ) { /**Get sidebar's offset position**/ var $offset = $ ( 'aside' ).offset ( ); /**Get sidebar's width**/ var $width = $ ( 'aside' ).outerWidth ( true ); /**Create an style array for our sidebar**/ var styles = { left : $offset.left, width: $width }; /**Set aside/Sidebar's CSS.**/ $ ( 'aside' ).css ( styles ); }); 。 尝试使用

<%=btn_CR.ClientID%>

此外,在.js功能中,您正在呼叫document.getElementById('btn_CR').focus(); printPage没有元素,因此会返回getElementById(printIt').innerHTMLID 'printIt'将会中断。

答案 1 :(得分:0)

代码<%=btn_CR.ClientID%>的这一部分未在print.js内转换。  现在因为你需要翻译它才能在javascript文件之前制作它,例如你可以这样做:

 <script>
 var NextFocusButtonId = <%=btn_CR.ClientID%>;
 </script> 
 <script type="text/javascript" src="../scripts/print.js"></script> 

并在你写的print.js

  document.getElementById(NextFocusButtonId).focus();