Reputation: 90
I'm trying to calculate the price when the textbox is changed. Inside the table cell I have six textboxes, and I want to recalculate the total every time the numbers change in the textboxes.
<asp:TableCell VerticalAlign="Middle">
Price: $12 non reflective, $24 Reflective
<br />
<br />
Quantity
<asp:TextBox ID="TextBox2" BackColor="Blue" runat="server" Width="40" Text="1" TextMode="Number"></asp:TextBox>
<asp:TextBox BackColor="Red" ID="TextBox3" Text="0" runat="server" Width="40" TextMode="Number"></asp:TextBox>
<asp:TextBox Text="0" ForeColor="White" BackColor="Black" ID="TextBox4" runat="server" Width="40" TextMode="Number"></asp:TextBox>
<asp:TextBox Text="0" ID="TextBox5" runat="server" Width="40" TextMode="Number"></asp:TextBox>
<asp:TextBox Text="0" ForeColor="White" BackColor="Red" ID="TextBox6" runat="server" Width="40" TextMode="Number"></asp:TextBox>
<asp:TextBox Text="0" ID="TextBox7" runat="server" Width="40" TextMode="Number"></asp:TextBox>
<br />
<asp:Label ID="Label178" Width="80" Font-Size="Small" Font-Bold="true" runat="server" Text=" "></asp:Label>
<asp:Label ID="Label179" Font-Size="X-Small" Font-Bold="true" runat="server" Text="Colors"></asp:Label>
<asp:Label ID="Label180" runat="server" Width="140" Text=" "></asp:Label>
<asp:Label ID="Label181" runat="server" Font-Size="X-Small" Text="Reflective"></asp:Label>
<br />
<br />
Total: <u>$<asp:Label runat="server" ID="tp36" Text="12" Font-Bold="false"></asp:Label></u>
</asp:TableCell>
I want to do it without going back to the server and using server-side code. I would like to do it on client-side code (JavaScript). So I made a script at the end of my .aspx page.
<script src="Roadside.js" type="text/javascript"></script>
</body>
</html>
Roadside.js:
var deal = document.getElementById("TextBox2");
var deal1 = document.getElementById("TextBox2");
var deal2 = document.getElementById("TextBox3");
var deal3 = document.getElementById("TextBox4");
var deal4 = document.getElementById("TextBox5");
var deal5 = document.getElementById("TextBox6");
var deal6 = document.getElementById("TextBox7");
deal.onchange = function() {
var m1a = deal1.getAttribute("Text")
var m2a = deal2.getAttribute("Text");
var m3a = deal3.getAttribute("Text");
var m4a = deal4.getAttribute("Text");
var m5a = deal5.getAttribute("Text");
var m6a = deal6.getAttribute("Text");
var m1 = Number(m1a);
var m2 = Number(m2a);
var m3 = Number(m3a);
var m4 = Number(m4a);
var m5 = Number(m5a);
var m6 = Number(m6a);
var m1 = m1 * 12;
var m2 = m2 * 12;
var m3 = m3 * 12;
var m4 = m4 * 12;
var m5 = m5 * 24;
var m6 = m6 * 24;
var tt = m1 + m2 + m3 + m4 + m5 + m6;
document.getElementById("tp36").innerHTML = tt;
};
I'm using Visual Studio 2013 and I am new to JavaScript. I used to have it calculate on server-side in C# but it had to post back every time you changed the textbox.
Upvotes: 1
Views: 92
Reputation: 1678
Don't use getAttribute("Text")
, just get the value of the inputs like so:
var m1a = deal1.value;
var m2a = deal2.value;
var m3a = deal3.value;
var m4a = deal4.value;
var m5a = deal5.value;
var m6a = deal6.value;
Upvotes: 1
Reputation: 826
I think the on-change event doesn't fire on the text area until the element loses focus. You could try using an on-keyup event instead.
Upvotes: 1