繁体   English   中英

打字时的千位分隔符和小数点(带逗号)

[英]Thousand separator while typing and decimal (with comma)

我有个问题。

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

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

问题是keyup 不允许我插入“,” ,我需要使用它作为小数点分隔符(在发送之前我将用 .作为小数点分隔符)。

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

你可以使用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/

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

<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>

它适用于我的 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM