在我的asp.net网站中,我试图将两个文本框值相乘并将其存储到另一个文本框中。但是,我的代码不起作用
JS:
<script language="javascript">
function myFunction(x)
{
var x = document.getElementById("<%=u_price1.ClientID %>") * document.getElementById("<%=qty1.ClientID %>");
return x;
}
</script>
文本框:
<asp:TextBox ID="u_price1" runat="server" Width="63px" CssClass="txt1">0</asp:TextBox>
<asp:TextBox ID="qty1" runat="server" Width="63px" CssClass="txt1">0</asp:TextBox>
<asp:TextBox ID="amt1" runat="server" Width="81px" CssClass="txt1" onfocus="myFunction(this)"></asp:TextBox>
请告诉我,我在这里做错了什么。
答案 0 :(得分:3)
我突然想到的是你正在使用乘法运算符(*
)来对抗两个DOM元素,这两个元素将返回NaN
。也就是说,
document.getElementById("<%=u_price1.ClientID %>")
返回一个对象,而不是该文本框内容的数值。我认为你想要做的是获取文本框的值:
var x = document.getElementById("<%=u_price1.ClientID %>").value *
document.getElementById("<%=qty1.ClientID %>").value;
如果你想要真正防守,你可以检查以确保它们是有效数字:
var price = Number( document.getElementById("<%=u_price1.ClientID %>").value );
var qty = Number( document.getElementById("<%=qty1.ClientID %>").value );
然后你可以检查以确保它们是有效数字:
if( isNaN( price ) || isNaN( qty ) ) {
// take appropriate error handling action here
}
但是,您的脚本可能还有其他事情发生。我会在console.log
内放myFunction
以确保它甚至被调用。如果它没有被调用,那么其他东西是错误的,但你必须解决对象乘法问题。
答案 1 :(得分:2)
function myFunction(x) {
var price = parseFloat(document.getElementById("<%=u_price1.ClientID %>").value) || 0,
qty = parseInt(document.getElementById("<%=qty1.ClientID %>").value, 10) || 0;
x.value = price * qty.
}
答案 2 :(得分:0)
我在HTML中对其进行了验证,并且工作正常。
<html>
<body>
<input type="text" id="first"></input>
<input type="text" id="second"></input>
<input type="text" id="result" onfocus="myFunction(this)"></input>
<script type="text/javascript">
function myFunction(x){
var price = parseFloat(document.getElementById("first").value) || 0,
qty = parseInt(document.getElementById("second").value, 10) || 0;
x.value = price * qty;
}
</script>
</body>
</html>
如果您仍有问题,可以验证并告诉我。
这是ASP.NET代码:
我们需要为TextBox元素设置ClientIDMode = Static,以便在javascript中访问其字段,否则将更改其ID。
<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<asp:TextBox runat="server" ID="txtinput1" ClientIDMode="Static"></asp:TextBox>
<asp:TextBox runat="server" ID="txtinput2" ClientIDMode="Static"></asp:TextBox>
<asp:TextBox runat="server" ID="txtresult" onfocus="myFunction(this)"></asp:TextBox>
<script type="text/javascript">
function myFunction(x) {
var price = parseFloat(document.getElementById("txtinput1").value) || 0,
qty = parseInt(document.getElementById("txtinput2").value, 10) || 0;
x.value = price * qty;
}
</script>
</asp:content>
如果这有帮助,请告诉我。我使用了onfocus,它也适用于onblur。
答案 3 :(得分:0)
you can try this solution...
<script language="javascript">
function myFunction()
{
var u_price1 = parseInt(document.getElementById("u_price1").value);
var qty1= parseInt(document.getElementById("qty1").value);
var x = u_price1 * qty1;
document.getElementById("amt1").value = x;
}
</script>
<html>
<body>
<input type="text" ID="u_price1" name="u_price1" Width="63px" CssClass="txt1"/>
<input type="text" ID="qty1" name="qty1" Width="63px" CssClass="txt1"/>
<input type="text" ID="amt1" name="amt1" Width="81px" CssClass="txt1" onfocus="myFunction()"/>
</body>
</html>