【问题标题】:Thousand separator while typing and decimal (with comma)输入时的千位分隔符和小数(带逗号)
【发布时间】:2017-11-14 08:43:14
【问题描述】:

我有问题。

        $('#value-salary').on('keyup', function(){
            if($(this).val() != ""){
                var n = parseInt($(this).val().replace(/\D/g,''),10);
                $(this).val(n.toLocaleString());
            }
        });

这让我看到“。”打字时作为千位分隔符。在提交之前,我将替换“。”使用“”,现在一切正常。

问题是 keyup 不允许我插入“,”,我需要将其用作小数分隔符(在发送之前,我会将 , 替换为 . 但用户不感兴趣rest api。他想看到“,”作为小数分隔符)。

我该如何解决这个问题? Keypress 或 keydown 不是好的解决方案...谢谢!

【问题讨论】:

  • 试试input
  • 如果它不清晰,这正是您对\D(非数字)的要求。

标签: javascript jquery


【解决方案1】:

你可以使用autoNumeric.js

$(".testInput").autoNumeric('init', {
    aSep: '.', 
    aDec: ',',
    aForm: true,
    vMax: '999999999',
    vMin: '-999999999'
});
<input class="testInput" type="text" value="8000"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/autonumeric/1.8.2/autoNumeric.js"></script>

请查看更多关于如何使用数字的信息。
http://www.decorplanit.com/plugin/

【讨论】:

  • 是的,我会的。谢谢
【解决方案2】:

你可以试试这段代码。它的地方,作为千位分隔符,你可以使用。为您的小数分隔符。您可以轻松自定义要用于每个目的的符号。

<html>
<head>
<script language="javascript" type="text/javascript">
    function thousandSeparator(n, sep) {
        var sRegExp = new RegExp('(-?[0-9]+)([0-9]{3})'),
        sValue = n + '';

        if (sep == undefined) { sep = ','; }

        while (sRegExp.test(sValue)) {
            sValue = sValue.replace(sRegExp, '$1' + sep + '$2');
        }

        return sValue;
    }

    function showSeparator() {
        var myValue = document.getElementById("txtInvoicePrice").value;
        myValue = thousandSeparator(myValue.replace(/,/g, ""), ',');
        document.getElementById("txtInvoicePrice").value = myValue;
    }

    function removeSeparator() {
        var myValue = document.getElementById("txtInvoicePrice").value;
        myValue = myValue.replace(',', '');
        document.getElementById("txtInvoicePrice").value = myValue;
    }
</script>
</head>
<body>
    <input type="text" id="txtInvoicePrice" onfocus="javascript:removeSeparator();" onblur="javascript:showSeparator();" />
</body>
</html>

【讨论】:

    【解决方案3】:

    它适用于我的 javascript 代码:

    <input type="text" name="xxx" onkeyup="ididit(this,this.value.charAt(this.value.length-1))" value=""/>
    

    还有:

    <script>
    
        function ididit(donde,caracter) {
            pat = /[\*,\+,\(,\),\?,\\,\$,\[,\],\^]/
            valor = donde.value
            largo = valor.length
            crtr = true
    
            if(isNaN(caracter) || pat.test(caracter) == true) {
                if (pat.test(caracter)==true) {
                    caracter = "\\" + caracter
                }
                carcter = new RegExp(caracter,"g")
                valor = valor.replace(carcter,"")
                donde.value = valor
                crtr = false
            } else {
                var nums = new Array()
                cont = 0
                for(m=0;m<largo;m++) {
                    if(valor.charAt(m) == "," || valor.charAt(m) == " ") {
                        continue;
                    }else{
                        nums[cont] = valor.charAt(m)
                        cont++
                    }
                }
            }
    
            var cad1="",cad2="",tres=0
            var cad3="",cad4=""
            if(largo > 3 && crtr == true) {
                if (nums[0]=="$"){
                    nums.shift()
                }
                for (k=nums.length-1;k>=0;k--) {
                    cad1 = nums[k]
                    cad2 = cad1 + cad2
                    tres++
                    if((tres%3) == 0) {
                        if(k!=0){
                            cad2 = "," + cad2
                        }
                    }
                    if (k==0) {
                        cad2 = "$ " + cad2
                    }
                }
                donde.value = cad2
            } else if (largo <= 3 && crtr == true) {
                if (nums[0]=="$"){
                    nums.shift()
                }
                for (k=nums.length-1;k>=0;k--) {
                    cad3 = nums[k]
                    cad4 = cad3 + cad4
                    if (k==0) {
                        cad4 = "$ " + cad4
                    }
                }
                donde.value = cad4
            }
        }
    
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多