在一个页面中有一个GRID,它生成的列表中,在每一行都有两个输入框,在其中的一个输入值后,它的值会自动乘以一个数,然后显示到另一个输入框中,如何实现,要不刷新的。

解决方案 »

  1.   

    js就可以了,js得到输入框的value,操作再赋值
      

  2.   

    OnTextChanged="textChanged" 写JS是这样的意思吗 给点意见,看有没高人来写全代码
      

  3.   

    总体来说 就是js  textbox的 onchange事件里面 进行对数字进行判断  然后去到数值进行 相乘 最后将结果 输出就 
      

  4.   

    建议 将html 粘出来 
      

  5.   

    <script>
    function checkInt(o){
      theV=isNaN(parseInt(o.value))?0:parseInt(o.value);
      if(theV!=o.value){o.value=theV;}
      txtTotal.value=txtAmount.value*txtPrice.value;
    }
    function checkP(o){
      theV=isNaN(parseFloat(o.value))?0:parseFloat(o.value);
      theV=parseInt(theV*100)/100;
      if(theV!=o.value){
        theV=(theV*100).toString();
        theV=theV.substring(0,theV.length-2)+"."+theV.substring(theV.length-2,theV.length)
        o.value=theV;
      }
      txtTotal.value=txtAmount.value*txtPrice.value;
    }
    </script>
    数量:
    <input id=txtAmount value=0 onkeyup="checkInt(this);"  onpaste="checkInt(this);"  oncut="checkInt(this);"  ondrop="checkInt(this);"  onchange="checkInt(this);">
    单价:
    <input id=txtPrice value=0 onkeyup="checkP(this);"  onpaste="checkP(this);"  oncut="checkP(this);"  ondrop="checkP(this);"  onchange="checkP(this);" style="border-right-width:0px;margin-right:0px;">
    <input style="border-left-width:0px;margin-left:-4px;width:18px" value="¥" readonly>
    总价:
    <input id=txtTotal value=0 style="border-right-width:0px;margin-right:0px;" readonly>
    <input style="border-left-width:0px;margin-left:-4px;width:18px" value="¥" readonly>
      

  6.   

    [Quote=引用 7 楼 lvjianwu 的回复:]
    如果是单独的好作,关键是它是一个GRID,每一行都有两个输入框,每行的控制每行的。
      

  7.   


    asp.net会在浏览器端生成不同的ID ,但都是有固定命名规范的,具体不太了解 你可以找下源码看看。。不刷新的话就用JS,局部回传 Ajax也行。。
      

  8.   

    你使用的是 jquery 还是 js 啊   我出现这样的 我都是 将当前(textbox)dom传入到function(objdoc){}然后在方法里面取objdoc的上一个或者下一个 需要的元素 然后 赋值给objdoc的元素  
      

  9.   

    <html>
    <head>
    <script type="text/javascript">
    function upperCase()
    {
    var x=document.getElementById("fname").value;
    document.getElementById("fname1").value=parseInt(x)*5; 
    }
    </script>
    </head><body>输入数字:
    <input type="text" id="fname" onblur="upperCase()" />
    <input type="text" id="fname1"  />
    </body>
    </html>
      

  10.   


    Jquery做这个还是比较简单给所有的textbox相同的name,给它们绑定change事件通过层次关系,得到值改变值
      

  11.   

    你的GRID是什么做的?如果是table,那么可以
    使用parentNode.parentNode查找到所在的行,然后就可以找到该行的其他输入框了。
      

  12.   

      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="CustID"
                    DataSourceID="SqlDataSource1">
                    <Columns>
     <ItemTemplate>
        <asp:TextBox  ID="TextBox1" runat="server" Text='<%# Bind("fen") %>'></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                                           <asp:TemplateField>
                            <ItemTemplate>
                                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
    </asp:GridView>
    现在就是在其中的一个输入值后,它的值会自动乘以一个数,然后显示到另一个输入框中
      

  13.   

    如果两个textbox的位置不相邻,要根据情况修改nextSibling.    <form id="form1" runat="server">
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:BoundField DataField="ID" HeaderText="ID" />
                <asp:BoundField DataField="Name" HeaderText="Name" />
                <asp:TemplateField HeaderText="InputOne">
                    <ItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" onblur="Caculate(this)"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="InputTwo">
                    <ItemTemplate>
                        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            </asp:GridView>
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
            <script type="text/javascript">
                function Caculate(obj){
                    if(obj.value.length<=0){
                        return;
                    }
                    var ct = 5;
                    var PN = obj.parentNode;
                    while(PN.tagName!="TD")
                        PN=PN.parentNode;
                    var nt = PN.nextSibling;
                    while(nt.tagName!="TD")
                        nt = nt.nextSibling;
                    var ntTxt = nt.firstChild;
                    ntTxt.value = ct*obj.value;
                }
            </script>
        </form>
    public partial class GridView : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GridView1.DataSource = GetTable();
                GridView1.DataBind();
            }
        }
        public DataTable GetTable()
        {
            string[] name = { "csdn", "cnblogs", "msdn" };
            DataTable dt = new DataTable();
            dt.Columns.Add("ID", typeof(int));
            dt.Columns.Add("Name", typeof(string));
            for (int i = 0; i < name.Length; i++)
            {
                DataRow row = dt.NewRow();
                row[0] = i + 1;
                row[1] = name[i];
                dt.Rows.Add(row);
            }
            return dt;
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in GridView1.Rows)
            {
                TextBox txt = row.FindControl("TextBox2") as TextBox;
                if (txt != null)
                    Response.Write(txt.Text + "<br/>");
            }
        }
    }
      

  14.   

    个人建议jquery 比较快速方便的 在 <asp:TextBox onclick="funs($(this))"  ID="TextBox1" runat="server" Text='<%# Bind("fen") %>'></asp:TextBox>function(currentDom)
    {
    xiagetext=ParsetInt($(currentDom).next("input").val());
    xiagetext*=ParsetInt(currentDom.val());
    }
    手写的 大体就是这样 做 不知道函数对不对 jquery的 呵呵