2016-10-01 4 views
1

У меня есть кнопка для печати. Я хочу, чтобы после нажатия кнопки печати фокус переместился на другую кнопку. Но мой код не работает.После нажатия кнопки для печати, сфокусируйтесь на другой кнопке

ошибка Я получаю от 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() находится во внешних "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.

+0

вы уверены, ошибка во втором 'getElementById'? – Backs

+0

@Backs Я не очень хорош для javascript. Я просто отправляю то, что получаю с консоли firebug. Пожалуйста, расскажите, что может быть решением проблемы. Спасибо! – user4221591

+0

Ребята, пожалуйста, дайте мне некоторое решение. Спасибо! – user4221591

ответ

1

Вы не можете использовать встроенное выражение <%=btn_CR.ClientID%> в файле .js. Попробуйте использовать

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

Кроме того, в вашем printPage функции вы звоните getElementById(printIt').innerHTML. Нет элемента с ID 'printIt', поэтому он вернется null, и null.innerHTML сломается.

+0

Спасибо за быстрый ответ. Итак, что я должен использовать, чтобы сосредоточиться на другой кнопке? – user4221591

+0

Я предоставил полный код aspx. Пожалуйста, смотрите. Благодаря! – user4221591

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(); 
+0

Должен ли я использовать 'document.getElementById (NextFocusButtonId) .focus();' или 'document.getElementById ('NextFocusButtonId'). Focus();'. Пожалуйста, предложите. – user4221591

+0

Я предоставил HTML-страницу. Посмотрите на код. Я внес изменения, как вы предлагали, но по-прежнему не может решить проблему. Спасибо!!! – user4221591

Смежные вопросы