我有一个只允许数值的文本框, 并且它用逗号分隔,工作正常,而我使用小数分离它从第一个逗号字段中清除,
实施例: 我输入一个数字:43,453 我需要结果:43,453.00 现在结果:43.00
请帮我解决这个问题
HTML
<input type="text" class="form-control number numericOnly" />
凭证
$(document).ready(function () {
$("input.number").blur(function () {
$(this).val(parseFloat($(this).val()).toFixed(2));
});
$('input.number').keyup(function(event) {
// skip for arrow keys
if(event.which >= 37 && event.which <= 40){
event.preventDefault();
}
$(this).val(function(index, value) {
value = value.replace(/,/g,'');
return numberWithCommas(value);
});
});
function numberWithCommas(x) {
var parts = x.toString().split(".");
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join(".");
}
});
$('.numericOnly').keypress(function (event) {
if ((event.which != 46 || $(this).val().indexOf('.') != -1) &&
((event.which < 48 || event.which > 57) &&
(event.which != 0 && event.which != 8))) {
event.preventDefault();
}
var text = $(this).val();
if ((text.indexOf('.') != -1) &&
(text.substring(text.indexOf('.')).length > 2) &&
(event.which != 0 && event.which != 8) &&
($(this)[0].selectionStart >= text.length - 2)) {
event.preventDefault();
}
});
答案 0 :(得分:1)
这是因为parseFloat
操作而发生的。最简单的解决方案是在转换为浮动之前替换逗号:
$("input.number").blur(function () {
$(this).val(numberWithCommas(parseFloat($(this).val().replace(/,/g, '')).toFixed(2)));
});