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

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

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

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

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

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

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

 $("#test").on('keyup', function() { var V = $(this).val().split(''), A=[], L=V.length; for (var i=0; i 

尝试它有一个小提琴吗?

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

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

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