C# Javascript的Onfocus()事件未计算文本框值

C# Javascript的Onfocus()事件未计算文本框值,c#,javascript,asp.net,C#,Javascript,Asp.net,在我的asp.net网站中,我试图将两个文本框的值相乘,并将其存储到另一个文本框中。但是,我的代码不起作用 JS: <script language="javascript"> function myFunction(x) { var x = document.getElementById("<%=u_price1.ClientID %>") * document.getElementById("<%=qty1.ClientID %>"); return x;

在我的asp.net网站中,我试图将两个文本框的值相乘,并将其存储到另一个文本框中。但是,我的代码不起作用

JS:

<script language="javascript">
function myFunction(x)
{
var x = document.getElementById("<%=u_price1.ClientID %>") * document.getElementById("<%=qty1.ClientID %>");
return x;
}
</script>

函数myFunction(x)
{
var x=document.getElementById(“”)document.getElementById(“”);
返回x;
}
文本框:

<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
0
请告诉我我在这里做错了什么。

函数myFunction(x){
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.
}
var price=parseFloat(document.getElementById(“”.value)| | 0, qty=parseInt(document.getElementById(“”).value,10)| | 0; x、 价值=价格*数量。 }
  • 将两个节点相乘,同时需要值
  • 您需要将字符串值转换为数字
  • 您需要保存计算结果
  • 函数myFunction(x){
    var price=parseFloat(document.getElementById(“”.value)| | 0,
    qty=parseInt(document.getElementById(“”).value,10)| | 0;
    x、 价值=价格*数量。
    }
    
  • 将两个节点相乘,同时需要值
  • 您需要将字符串值转换为数字
  • 您需要保存计算结果

  • 我突然想到的一件事是,对两个DOM元素使用乘法运算符(
    *
    ),它将返回
    NaN
    。就是

    document.getElementById("<%=u_price1.ClientID %>")
    

    但是,您的脚本可能还有其他方面。我会在
    myFunction
    中放置一个
    console.log
    ,以确保它甚至被调用。如果它没有被调用,那么其他的东西是错误的,但是你肯定必须解决对象乘法问题。

    我突然想到的一件事是你对两个DOM元素使用乘法运算符(
    *
    ),它将返回
    NaN
    。就是

    document.getElementById("<%=u_price1.ClientID %>")
    

    但是,您的脚本可能还有其他方面。我会在
    myFunction
    中放置一个
    console.log
    ,以确保它甚至被调用。如果它没有被调用,那么其他的东西是错误的,但是你肯定必须解决对象乘法问题。

    我在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>
    
    
    函数myFunction(x){
    var price=parseFloat(document.getElementById(“first”).value)| 0,
    qty=parseInt(document.getElementById(“second”).value,10)|0;
    x、 价值=价格*数量;
    }
    
    你能核实一下吗?如果你还有问题,请告诉我

    以下是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>
    
    
    函数myFunction(x){
    var price=parseFloat(document.getElementById(“txtinput1”).value)| | 0,
    qty=parseInt(document.getElementById(“txtinput2”).value,10)| | 0;
    x、 价值=价格*数量;
    }
    

    让我知道这是否有帮助。我使用了onfocus,它也适用于onblur。

    我在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>
    
    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>
    
    
    函数myFunction(x){
    var price=parseFloat(document.getElementById(“first”).value)| 0,
    qty=parseInt(document.getElementById(“second”).value,10)|0;
    x、 价值=价格*数量;
    }
    
    你能核实一下吗?如果你还有问题,请告诉我

    以下是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>
    
    
    函数myFunction(x){
    var price=parseFloat(document.getElementById(“txtinput1”).value)| | 0,
    qty=parseInt(document.getElementById(“txtinput2”).value,10)| | 0;
    x、 价值=价格*数量;
    }
    
    让我知道这是否有帮助。我使用了onfocus,它也适用于onblur。

    您可以尝试此解决方案。。。
    
    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>
    
    函数myFunction() { var u_price1=parseInt(document.getElementById(“u_price1”).value); var qty1=parseInt(document.getElementById(“qty1”).value); var x=单价1*qty1; document.getElementById(“amt1”).value=x; }
    您可以尝试此解决方案。。。
    函数myFunction()
    {
    var u_price1=parseInt(document.getElementById(“u_price1”).value);
    var qty1=parseInt(document.getElementById(“qty1”).value);
    var x=单价1*qty1;
    document.getElementById(“amt1”).value=x;
    }
    
    谢谢你的建议。我试过了,但仍然不起作用。@user3050674哦,内联处理程序。。。更新了我的答案。谢谢你的建议。我试过了,但仍然不起作用。@user3050674哦,内联处理程序。。。更新了我的答案。正在调用函数@Yury在你修改后我也试过了。但它仍然不起作用。@user3050674你真的读过伊森或尤里的答案吗?关键字是
    value
    ,您不能相互使用多个HTMLElement。@Teemu是的,我已根据给出的建议对其进行了必要的更改。但是,在我的asp.net页面中,它不起作用。然而,如果我尝试做任何其他事情,比如改变文本框的背景,它可以正常工作。控制台上是否有错误?代码是否未执行?你没有得到你期望的价值吗?你得到了什么?你不能只是说“它不起作用”,然后期望我们能够神奇地找出问题所在。请提供更多详细信息。正在调用函数@Yury在你修改后我也试过了。但它仍然不起作用。@user3050674你真的读过伊森或尤里的答案吗?关键字是
    value
    ,您不能相互使用多个HTMLElement。@Teemu是的,我已根据给出的建议对其进行了必要的更改。但是,在我的asp.NETP