如何才能才textbox中输入数字时就成为金额样式##,###,###.##这种样式。是在asp.net中
因为textchange需要像服务器端提交,但是这是要在textbox失去焦点时才能触发,而我是想实时显示金额样式。

解决方案 »

  1.   

    所以要用js实现,js有个onchange事件
      

  2.   

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function formatNum(obj)
    {
    obj.value=obj.value.replace(",","");
    if(isNaN(obj.value))
    {
    alert('请填写数字!');
    }
    else
    {
    if(obj.value.split(".").length>1)//带小数点的
    {
    var n1=obj.value.split(".")[0];
    var n2=obj.value.split(".")[1].substring(0,2);
    if(n1>3)
    {
    var tempStr="";
    var arr=new Array();
    var j=0;
    for(i=0;i<n1.length;i+=3)
    {
        arr[j] = n1.substring(n1.length-(i+3),n1.length-i);j++
    }
    tempStr = arr.reverse();
    obj.value=tempStr+"."+n2;
    }
    }
    else//不带小数点的
    {
    var n1=obj.value;
    if(n1>3)
    {
    var tempStr="";
    var arr=new Array();
    var j=0;
    for(i=0;i<n1.length;i+=3)
    {
        arr[j] = n1.substring(n1.length-(i+3),n1.length-i);j++
    }
    tempStr = arr.reverse();
    obj.value=tempStr;
    }
    }
    }
    }
    //-->
    </SCRIPT>
    <FORM name=form1 METHOD=POST ACTION="">
    <INPUT TYPE="text" NAME="txt1" onblur="formatNum(this);">
    </FORM>
    好久没写js了累死老夫
      

  3.   


    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
        <script type="text/javascript">
            function setTextValue(txtID)
            {
                var txt = document.getElementById(txtID);
                if(txt != null)
                {
                    var result = "";
                    var txtValue = txt.value;
                    if(txtValue.length > 3)
                    {
                        txtValue = txtValue.replace(/,/,"");
                        var mod = txtValue.length % 3;
                        var prefix = txtValue.substring(0,mod);
                        var postfix = txtValue.substring(mod,txtValue.length);
                        for(var i = 0;i < postfix.length;i++)
                        {
                            if((i + 1) % 3 == 0 && (i != postfix.length - 1) )
                            {
                                result += postfix.substring(0,i + 1) + "," ;
                                postfix =  postfix.substring(i + 1,postfix.length);
                            }
                        }
                        if(prefix =="")
                            txt.value = result + postfix;
                        else
                            txt.value = prefix + "," + result + postfix;
                    }
                    
                }
            }
        </script>
    </head>
    <body >
        <form id="form1" runat="server">      
            <asp:TextBox ID="TextBox1" runat="server" onblur = "setTextValue(this.id)"></asp:TextBox>
        </form>
    </body>
    </html>楼主,看看,不知道能否满足你的要求
      

  4.   

    不错不错。
                     
    http://forum.csdn.net/PointForum/Forum/ReplyTopic.aspx?forumID=3036657c-277c-476c-982d-75f154e09050&topicID=88116a8f-816a-42db-a084-5c455855d2c0&postDate=2008-6-20+11%3a46%3a43[size=18px]回复内容太短了![/size]
      

  5.   

    实在不好意思,中午的时候神志不清,搂主被忽悠了一把,哈哈~这不,我赶快把手里的活做完,就立马又修改了方法,给搂主<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
        <script type="text/javascript">
            function setTextValue(txtID)
            {
                var txt = document.getElementById(txtID);
                if(txt != null)
                {
                    var result = "";
                    var intPart = "";
                    var decimalPart = "";
                    var txtValue = txt.value;
                   
                    if(!isNaN(txtValue))
                    {
                        if(txtValue.indexOf(".") == -1)
                            intPart = txtValue;
                        else
                        {
                            var arraySplit = txtValue.split(".");
                            intPart = arraySplit[0];
                            decimalPart = arraySplit[1];
                        }
                        if(intPart.length > 3)
                        {
                            intPart = intPart.replace(/\,/g,"");
                            var mod = intPart.length % 3;
                            var prefix = intPart.substring(0,mod);
                            var postfix = intPart.substring(mod,intPart.length);
                            var sign = 0;
                            while(postfix.length > 3)
                            {
                                sign ++;
                                if(sign % 3 == 0)
                                {
                                    result += postfix.substring(0,3) + "," ;
                                    postfix =  postfix.substring(3,postfix.length);
                                    sign = 0;
                                }
                            }
                            if(prefix =="")
                                result = result + postfix;
                            else
                                result = prefix + "," + result + postfix;
                            if(decimalPart != "")
                                result += "." + decimalPart;
                            txt.value = result;
                        }
                    }
                }
            }
        </script>
    </head>
    <body >
        <form id="form1" runat="server">      
            <asp:TextBox ID="TextBox1" runat="server" onblur = "setTextValue(this.id)"></asp:TextBox>
            <span id="spn"></span>
        </form>
    </body>
    </html>
      

  6.   

    这些都不对呀,都是要失去焦点才可以转成金额样式.如果是那样的话直接用ontextchanged不就行了么!!
    有没有高手指点一下呀!!!
      

  7.   

    把textbox的 aotopostback属性设成true 试试