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

时间:2012-02-13 03:17:52

标签: jquery jquery-plugins number-formatting

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

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

这是我的插件:

 $.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);

        });
    });
};

3 个答案:

答案 0 :(得分:1)

我想这就是你要找的东西。每当你输入多个句号或逗号时,它就会删除它。

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

http://jsfiddle.net/elclanrs/t8G2q/4/

答案 1 :(得分:0)

不确定我能得到你想要的东西,但是这里写的一个写得不好的例子很急,只是展示你如何通过迭代来做这样的事情:

$("#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);
});

fiddle here尝试吗?

答案 2 :(得分:0)

@minh,如果您只是想检查只有一个“,”或“。”在输入的数字中,您可以简单地执行以下操作:

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

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