Javascript 在INR标准中,在键控键上添加逗号

Javascript 在INR标准中,在键控键上添加逗号,javascript,jquery,Javascript,Jquery,我正在尝试删除键入数字后的文本并添加小数 我有多个input type=“text”,其中我在键盘上按INR(印度卢比)标准添加了一个逗号,但当我键入三个以上的数字时,整个值将被删除并添加“0”。另外,我的代码不允许使用十进制.00数字。我做错了什么 HTML: 尝试使用以下方法: $('input.Stylednumber').keyup(function(){ var t = $(this), v = t.val(); if(!v.match(/\.\d{2}$/)){ v

我正在尝试删除键入数字后的文本并添加小数

我有多个
input type=“text”
,其中我在键盘上按INR(印度卢比)标准添加了一个逗号,但当我键入三个以上的数字时,整个值将被删除并添加“0”。另外,我的代码不允许使用十进制.00数字。我做错了什么

HTML:

尝试使用以下方法:

$('input.Stylednumber').keyup(function(){
  var t = $(this), v = t.val();
  if(!v.match(/\.\d{2}$/)){
    v += '.00';
  }
  v = parseFloat(v.replace(/,/g, ''));
  if(!v){ // was not a number
    t.val('0.00');
    return false;
  }
  v = v.toFixed(2);
  if(v.length > 6){ 
    t.val(v.slice(0, -6).replace(/(/d{3})/, '$1,')+v.slice(-6));
  }
  else{
    t.val(v);
  }
});

这要求您在通过正则表达式将输入传递到之前清理输入

String.prototype.replaceAll=函数(搜索、替换){
var目标=此;
返回target.replace(新的RegExp(搜索'g'),replacement);
};
$('input.Stylednumber').keyup(函数(){
var input=$(this.val().replaceAll(',','');
如果(输入长度<1)
$(this.val('0.00');
否则{
var val=parseFloat(输入);
var格式=INR格式(输入);
if(格式化的.indexOf('.')>0){
var split=格式化的.split('.');
格式化=拆分[0]+'.+split[1]。子字符串(0,2);
}
$(this).val(格式化);
}
});
函数格式(val){
var x=val;
x=x.toString();
var afterPoint='';
如果(x.indexOf('.')>0)
afterPoint=x.substring(x.indexOf('.'),x.length);
x=数学楼层(x);
x=x.toString();
var lastThree=x.子字符串(x.长度-3);
var otherNumbers=x.substring(0,x.length-3);
如果(其他数字!='')
lastThree=','+lastThree;
var res=其他数字。替换(/\B(?=(\d{2})+(?!\d))/g,“,”)+lastThree+后置点;
返回res;
}


如果您不确定发生这种情况的原因,你不应该那样编程。@PHPglue你是对的,这就是我寻求帮助纠正错误的原因it@mplungjan你建议我的链接在那里我删掉了代码,但没有显示多个文本框的示例一个小建议可以帮助我更完美谢谢你的回复,但有一个小问题正在讨论中tab单击下一个文本框NaN出现,但不会出现,用0替换的铁路超高应在我的编辑中修复。当未输入数字且发生
keyup
事件时,出现了NaN。如果不能将NaN替换为0是,只需替换
$(this).val('0.00')部分,包含您希望它最终成为的内容。
$('input.Stylednumber').keyup(function(){
    var x=$(this).val();
    x=x.toString();
    var afterPoint = '';
    if(x.indexOf('.') > 0)
    afterPoint = x.substring(x.indexOf('.'),x.length);
    x = Math.floor(x);
    x=x.toString();
    var lastThree = x.substring(x.length-3);
    var otherNumbers = x.substring(0,x.length-3);
    if(otherNumbers != '')
    lastThree = ',' + lastThree;
    var res = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree + afterPoint;


    $(this).val(res );

});
$('input.Stylednumber').keyup(function(){
  var t = $(this), v = t.val();
  if(!v.match(/\.\d{2}$/)){
    v += '.00';
  }
  v = parseFloat(v.replace(/,/g, ''));
  if(!v){ // was not a number
    t.val('0.00');
    return false;
  }
  v = v.toFixed(2);
  if(v.length > 6){ 
    t.val(v.slice(0, -6).replace(/(/d{3})/, '$1,')+v.slice(-6));
  }
  else{
    t.val(v);
  }
});