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

Posted

技术标签:

【中文标题】如何通过jquery在文本框中检查用户输入的小数分隔符【英文标题】:How to check user inputted decimal separator in the textbox by jquery 【发布时间】:2012-02-13 03:17:52 【问题描述】:

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

例如:不允许用户输入 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)(?=(\d3)+$)/g, "$1" + options.thousands);
            return val.join(options.decimal);

        );
    );
;

【问题讨论】:

我能理解你的例子,但我不明白这与你的问题有什么关系。 你好 elcalnrs 。我的意思是不允许用户在文本框中输入 11111,55,,..4。用户只输入 11111,5545555。你能帮我改进这个 jquery 插件吗? 【参考方案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/

【讨论】:

你好elclanrs你上面写的代码有问题。当我在文本框中输入数字时:1111111 --> 输出:1.111.1 它不是值。值为真:1.111.111。我认为“切片”有问题。你能帮我修一下吗? 您好 elclanrs,您可以在 jsfiddle.net/nangvabien/Eeukx/5 看到演示。您可以输入一些案例进行测试:123456789 或 1234567 或 12345678。【参考方案2】:

我不确定我是否得到你想要的,但这里有一个写得很糟糕的例子,只是为了展示你如何通过迭代来做这样的事情:

$("#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) elseA.push(E);
        var Q=A.join('');
    
    $(this).val(Q);
);

有fiddle here可以试试吗?

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

以上是关于如何通过jquery在文本框中检查用户输入的小数分隔符的主要内容,如果未能解决你的问题,请参考以下文章

用户在输入框中输入小数点时逗号消失

c#中如何判断文本框中是不是是数字(包括小数)

正则表达式,电子邮件验证从文本框中获取用户输入

如何检查是不是在 KeyUp 事件的文本框中输入了数字或字母 [重复]

如何从 .NET 框架 C# 中的文本框中删除双逗号?

如何将文本字段限制为仅有效的小数?