如何通过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在文本框中检查用户输入的小数分隔符的主要内容,如果未能解决你的问题,请参考以下文章