要求在Input中只能输入数字,小数点,负号
例如1231.25 或-1231.25
并切在输入完成后将数字格式化成带有千分位与美元符号格式例
$1,231.25请大家帮帮忙谢谢

解决方案 »

  1.   

    那楼主根据charcode来判断就可以了,就是每次输入的只能是对应得Unicode键值,比如回车键是27,楼主来控制下就可以了
      

  2.   

    <input onkeyup="value=value.replace(/[^\d\.]/g,'')"> 只能输入数字和小数点
      

  3.   

    参考如下代码:
    (function () {
        var str = "1245678.123";
        if (!/^-?\d+(\.\d+)*$/.test(str)) {
            alert("格式不正确");
            return;
        }
        while (/(\d)(\d{3})([,\.])/.test(str))
            str = str.replace(/(\d)(\d{3})([,\.])/g, "$1,$2$3");
        alert("$" + str);
    })();
      

  4.   

    <input onkeyup="value=value.replace(/[^\d\.]/g,'')"> 
    var moneyFormatter:CurrencyFormatter = new CurrencyFormatter(selectedLocale);moneyFormatter.setCurrency("USD", "$");
    var valueText:String = moneyFormatter.format(123456.25);
      

  5.   

    <script>
    window.onload=function(){
        var obj=document.getElementById("txt1");
        obj.onkeypress=function(){
            var v=String.fromCharCode(event.keyCode);
                v=this.value+v;
            if(!v.match(/^-|-?\d+([.]\d+)?/))return false;
        }
        obj.onblur=function(){
            this.value="$"+this.value.replace(/([\d]+?)(?=(?:\d{3})+$)/g,"$1,");
        }
    }
    </script>
    <input id=txt1>
      

  6.   

    又改了一下
    <script>
    window.onload=function(){
        var obj=document.getElementById("txt1");
        obj.onkeypress=function(){
            var v=String.fromCharCode(event.keyCode);
                v=this.value+v;
            if(!v.match(/^-|-?\d+([.]\d+)?/))return false;
        }
        obj.onblur=function(){
            this.value="$"+this.value.replace(/([\d]+?)(?=(?:\d{3}([.]\d+)?)+$)/g,
                function($0,$1,$2,lastIndex,str){
                    if(str.substring(0,lastIndex+4).indexOf(".")!=-1)return $1;
                    return $1+",";
                });
        }
    }
    </script>
    <input id=txt1>1234567890a
      

  7.   

    哎~不对啊都有好多问题 shan1119 给的 #¥@#%……%@#这些字符都可以输进去我是个Js白痴大家帮帮忙吧
      

  8.   

    <script>
    window.onload=function(){
        var obj=document.getElementById("txt1");
        obj.onkeypress=function(){
            var v=String.fromCharCode(event.keyCode);
                v=this.value+v;
            if(!v.match(/^-$|-?\d+([.]\d+)?$/))return false;
        }
        obj.onblur=function(){
            this.value="$"+this.value.replace(/([\d]+?)(?=(?:\d{3}([.]\d+)?)+$)/g,
                function($0,$1,$2,lastIndex,str){
                    if(str.substring(0,lastIndex+4).indexOf(".")!=-1)return $1;
                    return $1+",";
                });
        }
    }
    </script>
    <input id=txt1>1234567890a
      

  9.   

    <script>
    window.onload=function(){
        var obj=document.getElementById("txt1");
        var flg=false;
        obj.onfocus=function(){flg=false;};
        obj.onkeypress=function(){
            var v=String.fromCharCode(event.keyCode);
                v=this.value+v;
                flg=false;
            if(!v.match(/^-$|^-?\d+[.]$|^-?\d+([.]\d+)?$/))return false;
            flg=true;
        }
        obj.onblur=function(){
            if(!flg)return;
            this.value="$"+this.value.replace(/([\d]+?)(?=(?:\d{3}([.]\d+)?)+$)/g,
                function($0,$1,$2,lastIndex,str){
                    if(str.substring(0,lastIndex+4).indexOf(".")!=-1)return $1;
                    return $1+",";
                });
        }
    }
    </script>
    <input id=txt1>1234567890a
      

  10.   


    可悲了~估计是IE了我的是IE8 我们要求支持IE8
      

  11.   

    哦我知道了~谢谢啊好像是有点用~但是问题出在你定义哪个Flag上面
    如果离开过一次下次就不好用了。
      

  12.   

    还是有点Bug我试着自己调试一下~如果兄弟有时间也帮我改一改好吗谢谢了
      

  13.   

    <script>
    function $(id){return document.getElementById(id)}
    function test(o){
      var s=o.value,  b=false;
      if(s.length==0)return
      if(s.indexOf('$')!=-1){s=s.substr(1,s.length);  s=s.replace(/,/g,'');  }
      if(!s.match(/^(\-|\+)?\d*\.?\d*$/gi)){alert("请输入数字");o.select();  return; }
      while (/(\d)(\d{3})([,\.])/.test(s)){
        s = s.replace(/(\d)(\d{3})([,\.])/g, "$1,$2$3");  b=true
      }
      if(b){o.value='$'+s} 
    }
    </script>
    <input type=text id=a name=a value='' onkeyup='test(this)' /><br>