2013-07-26 2 views
2

На нерабочем событии размытия выдается ошибка, которая написана ниже. Я просто хочу умножить значение в двух текстовых полях. Что я делаю неправильно.В случае нечеткого события blur дает ошибку

TypeError: document.getElementById(...) is null . 
var txt8 = document.getElementById("txtQuantity").value; 

<script type="text/javascript"> 
function CalcSellPrice2() { 

    var txt8 = document.getElementById("txtQuantity").value; 
    var txt9 = document.getElementById("txtUnit").value; 
    document.getElementById("TextBox10").value = txt8 + txt9; 
    document.getElementById(txtTotal).innerHTML = TotalPriceValue; 
    } 


</script> 

<asp:TextBox ID="txtQuantity" runat="server" CssClass="span6" 
              onblur="CalcSellPrice2();"></asp:TextBox> 

ответ

3

Поскольку TextBox является asp.net управления, так что вы должны использовать ClientID для того, чтобы Acces элементов управления ASP, потому что asp.net Rander HTML с разметкой и конкатенации ID значения каждого родителя именованием контейнера с ID значения контроля (Обратитесь к THIS) в

<%= txtQuantity.ClientID %> 

так что ваш сценарий выглядит следующим образом

var txt8 = document.getElementById(" <%= txtQuantity.ClientID %>").value; 

ИЛИ

Другой способ доступа ASP.NET управления является использование атрибута ClientIDMode, как только вы установите его Static не сцепить ID значения каждого контейнера именования родительского. поэтому ваш HTML будет выглядеть следующим образом.

<asp:TextBox ClientIDMode="Static" ID="txtQuantity" runat="server" CssClass="span6" onblur="CalcSellPrice2();"></asp:TextBox> 

таким образом, вы можете просто получить доступ к элементам управления ASP, как вы использовали в вашем вопросе без использования ClientID

+0

благодаря его решить мою проблему –

0

атрибута надстройки ClientIDMode = «Static» в TextBox

<asp:TextBox ClientIDMode="Static" ID="txtQuantity" runat="server" CssClass="span6" 
              onblur="CalcSellPrice2();"></asp:TextBox> 
Смежные вопросы