键入时的千位分隔符和小数(使用逗号)

时间:2017-11-14 08:43:14

标签: javascript jquery

我有问题。

        $('#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不是很好的解决方案......谢谢!

3 个答案:

答案 0 :(得分:2)

您可以使用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>
&#13;
&#13;
&#13;

请参阅更多有关如何使用数字的信息 http://www.decorplanit.com/plugin/

答案 1 :(得分:1)

你可以尝试这段代码。它放置,作为千分隔符,你可以使用。为您的小数分隔符。您可以轻松自定义要用于各种用途的符号。

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

答案 2 :(得分:0)

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