$('input#decimal').blur(function(){
var num = parseFloat($(this).val());
var cleanNum = num.toFixed(2);
$(this).val(cleanNum);
if(num/cleanNum < 1){
$('#error').text('Please enter only 2 decimal places, we have truncated extra points');
}
});
//This Regex will take negative number with - (minus) sign:
$('#id').on('input', function () {
this.value = this.value.match(/^[-]?\d*\.?\d{0,2}/);
});
//This regex will not take negative number or - (minus) sign:
$('#id').on('input', function () {
this.value = this.value.match(/^\d+\.?\d{0,2}/);
});
9条答案
按热度按时间egmofgnx1#
使用正则表达式的替代方法:
id选择器可以替换为css选择器。
nfs0ujit2#
这是小提琴http://jsfiddle.net/sabithpocker/PD2nV/
使用
toFixed
无论如何都会导致近似123.6666 -> 123.67
如果你想避免近似,请勾选此答案Display two decimal places, no roundingk75qkfdt3#
HTML5解决方案:
Demo
如果你想对无效的输入设置样式(有些浏览器默认会这样做),你可以使用
:invalid
selector:注意,这种方法不会尝试自动截断数字,但是如果用户输入的小数位数超过两位,输入将无效,因此表单不会被提交:
piv4azn74#
下面的函数将根据您对小数位数的需要限制小数位数,也会限制多个点
cnjp1d6j5#
qncylg1j6#
对所有符号尝试以下操作:
输入字段值替换(/(...)(.)/,“$1”);
或者这个数字:
输入字段值替换(/(.[0-9][0-9])([0 -9])/,“$1”);
我在这里找到了这个方法:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Example:_Switching_words_in_a_string
klr1opcd7#
643ylb088#
一个类似的解决方案,在达到超过2个小数位时使用退格键。
huus2vyu9#