12000.56  显示成 12,000.56

解决方案 »

  1.   


    没有效果啊 var htjgTextField = new Ext.form.NumberField({      
    id: 'ht_jg',   
    fieldLabel: '合同单价',   
    name: 'ht_jg',   
    decimalPrecision :2,
    grow: false,   
    allowBlank:false,
    blankText:'合同单价不能为空',
    format:'$0,0.00',
    anchor:'90%'  
    }); 
      

  2.   


    Number.prototype.format = function(){
    var numPart = this.toString().split('.');
    var subPart = [];
    while(numPart[0].length > 0){
    if(numPart[0].length > 3){
    subPart.push(numPart[0].substr(numPart[0].length - 3));
    numPart[0] = numPart[0].substr(0, numPart[0].length - 3);
    }
    else{
    subPart.push(numPart[0]);
    numPart[0] = subPart.reverse().join(',');
    break;
    }
    }
    return numPart.join('.');
    }
      

  3.   

    网上找了个,现在所有的NumberField都加上逗号了,我想只要金额的时候才加怎么设置呢?if (Ext.form.NumberField) {   
                Ext   
                        .apply(   
                                Ext.form.NumberField.prototype,   
                                {   
                                    decimalPrecision :2,   
                                    // allowNegative :false,   
                                    allowDecimals :true  
                                    // allowBlank : false   
                                    ,   
                                    cls :'numReadOnly'  
                                    // private   
                                    ,   
                                    FormatComma :true  
      

  4.   

    var cc =  function(s, x) {
                if (/[^0-9\.]/.test(s)) return "invalid value";
                s = String(s).replace(/^(\d*)$/, "$1.");
                s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
                s = s.replace(".", ",");
                var re = /(\d)(\d{3},)/;
                while (re.test(s))
                    s = s.replace(re, "$1,$2");
                if (x)
                    s = s.replace(/,(\d\d)$/, ".$1");
                else
                    s = s.replace(/,(\d\d)$/, "");
                return s.replace(/^\./, "0.")
            }
      

  5.   

    页面上把要格式化得值加个标签比如
    <td preset='m'></td><script>
    deal_momey_td() ;
    function deal_momey_td() {
        var tdDoms = document.getElementsByTagName('td');
        if (tdDoms == null) {
            return;
        }
        for (i = 0; i < tdDoms.length; i++) {
            if (tdDoms[i].preset == 'm') {
                var val_o = tdDoms[i].innerHTML;
                var val_n = '';
                if(isNaN(val_o))
                 val_n = val_o;
                else
                 val_n = toMoneyFormat(val_o);
                tdDoms[i].innerHTML = '<div style="text-align :right" nowrap>' + val_n + '</div>';
            }
        }
    }function toMoneyFormat(s) {
      if (null == s)
        return '';
      s = s + '';
      var sign = '';
      if (s == '') {
        return '';
      } else if (s == '0') {
        s = '0.00';
      } else {
        s += '';
        if (isNaN(s)) {
          return '-';
        }
        if (s.length == 0) {
          return '0.00';
        } else if (parseFloat(s) < 0) {
          s = Math.abs(s);
          sign = '-';
        }
        s = floatRound(s);
        var r = /^\d+\.\d{2}$/;
        var r1 = /^\d+$/;
        var r2 = /^\d+\.\d{1}$/;
        if (r.test(s)) {
        } else if (r1.test(s)) {
          s += '.00';
        } else if (r2.test(s)) {
          s += '0';
        }
      }
      var rtv = sign + toNumberFormat(s);
      return rtv;
    }
    </script>
      

  6.   

    ext 加toMoneyFormat  会出错