如何通过jquery检查文本框中用户输入的小数分隔符

如何通过jquery检查文本框中用户输入的小数分隔符,jquery,jquery-plugins,number-formatting,Jquery,Jquery Plugins,Number Formatting,我有插件格式编号。我想改进它。如果用户在文本框中输入了一个小数点分隔符,则用户不会在文本框中输入“,”或“.” 例:不允许用户输入11111,55,,.44..-->允许用户输入:11111554455 这里是我的插件: $.fn.myPlugin = function(options) { options = $.extend({}, { thousands: '.', decimal: ',' }, options); this.k

我有插件格式编号。我想改进它。如果用户在文本框中输入了一个小数点分隔符,则用户不会在文本框中输入“,”或“.”

例:不允许用户输入11111,55,,.44..-->允许用户输入:11111554455

这里是我的插件:

 $.fn.myPlugin = function(options)
{
    options = $.extend({}, {
        thousands: '.',
        decimal: ','
    }, options);

    this.keyup(function()
    {
        $(this).val(function(el, val)
        {
            val = val.replace(/[^\d.,]/g, '').split(options.decimal);
            val[0] = val[0].replace(options.decimal === '.' ? /,/g : /\./g, '');
            val[0] = val[0].replace(/(\d)(?=(\d{3})+$)/g, "$1" + options.thousands);
            return val.join(options.decimal);

        });
    });
};

我不确定我是否了解您的需求,但这里有一个写得很糟糕的示例,它只是为了展示如何通过迭代来完成类似的工作:

$("#test").on('keyup', function() {
    var V = $(this).val().split(''), A=[], L=V.length;
    for (var i=0; i<L; i++) {
        var E=V[i];
        if (E=='.' && A.indexOf(E)!=-1) {}else{A.push(E);}
        var Q=A.join('');
    }
    $(this).val(Q);
});
$(“#测试”).on('keyup',function(){
var V=$(this.val().split(“”),A=[],L=V.length;

对于(var i=0;i我想这就是您要查找的内容。每当您输入多个句点或逗号时,它都会将其删除

$('input').keyup(function(){
    var value = $(this).val(),
        patt = /(,.*?,|\..*?\.)/;
    if (patt.test(value)) { $(this).val(value.slice(0, -1)); }
});

@minh,如果您只想检查输入的数字中是否只有一个“,”或“,”,您只需执行以下操作:

val.match(/^\d+([,]\d+)?$/)


我可能误解了您想要检查的内容。如果是这样,请发表评论。

我可以理解您的示例,但我无法理解这与您的问题之间的关系。你好,elcalnrs。我的意思是不允许用户在文本框中输入11111、55、…4。用户只输入11111 5545555。您能帮我改进这个jquery插件吗?Hello Elclars您上面写的代码有问题。当我在文本框中输入数字:1111111-->输出:1.111.1时,它不是值。值为真:1.111.111。我认为“切片”有问题。您能帮我解决吗?Hi Elclars您可以在上看到演示。您可以输入一些案例进行测试:123456789或1234567或12345678。