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

发布于 2025-01-05 02:17:44 字数 707 浏览 0 评论 0原文

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

例如:不允许用户输入 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);

        });
    });
};

I have the plugin format number. And i want to improve it. If user inputted one decimal separator in the textbox , user do not input "," or "." in the textbox.

ex: no allow user input 11111,55,,.44.. --> allow user input:11111,5554455

Here my plugin:

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

        });
    });
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

墨小墨 2025-01-12 02:17:44

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

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

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

I suppose this is what you're looking for. Whenever you input more than one period or comma it'll just remove it.

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

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

月棠 2025-01-12 02:17:44

不确定我明白你在寻找什么,但这里有一个写得不好的例子,只是为了展示如何通过迭代来做这样的事情:

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

有一个 在这里摆弄来尝试一下吗?

Not sure I get what your looking for, but here's a poorly written example done in a hurry to just show how you can do something like this with iteration:

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

There's a fiddle here for trying it?

不必在意 2025-01-12 02:17:44

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

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

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

@minh, if you simply want to check that there is only one "," or "." in the inputted number, you can simply do something like:

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

I may have misunderstood exactly what you want to check for. If so, please post a comment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文