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

After a button is pressed for printing, focus on another button

提问人:user4221591 提问时间:10/1/2016 最后编辑:RPichioliuser4221591 更新时间:10/2/2016 访问量:464

问:

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

我从firebug中得到的错误是. 打印过程已成功完成,但打印后,焦点未转到“btn_CR”按钮。TypeError: document.getElementById(...) is null

我怎样才能做到这一点 打印过程结束后,焦点转到“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() 函数位于外部“print.js”文件中

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

JavaScript asp.net 客户端

评论

0赞 Backs 10/1/2016
你确定,错误在第二?getElementById
0赞 user4221591 10/1/2016
@Backs 我不太擅长javascript。我只是发布我从 firebug 控制台获得的内容。请您提出解决问题的方法。谢谢!
0赞 user4221591 10/2/2016
伙计们请给我一些解决方案。谢谢!

答:

1赞 Mladen P 10/1/2016 #1

不能在 .js 文件中使用内联表达式。 尝试使用<%=btn_CR.ClientID%>

document.getElementById('btn_CR').focus();

此外,在您的函数中,您正在调用 .没有元素 所以它会返回 ,并且会中断。printPagegetElementById(printIt').innerHTMLID 'printIt'nullnull.innerHTML

评论

0赞 user4221591 10/1/2016
感谢您的及时回复。那么我应该用什么来把焦点放在另一个按钮上呢?
0赞 user4221591 10/1/2016
我已经提供了完整的aspx代码。请看一下。谢谢!
0赞 Aristos 10/1/2016 #2

这部分代码在 中没有被翻译。 现在,因为您需要翻译它,所以在javascript文件之前可以做到这一点,例如,您可以这样做:<%=btn_CR.ClientID%>print.js

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

在你写的里面print.js

  document.getElementById(NextFocusButtonId).focus();

评论

0赞 user4221591 10/1/2016
我应该使用 or 吗?请提出建议。document.getElementById(NextFocusButtonId).focus();document.getElementById('NextFocusButtonId').focus();
0赞 user4221591 10/1/2016
我已经提供了页面的 HTML。请看一下代码。我已经按照您的建议进行了更改,但仍然无法解决问题。谢谢!!!