数字加逗号加小数点验证长度

本文介绍了一组JavaScript函数,用于实现数值输入的验证及格式化处理,包括去除逗号、添加千位分隔符、检查数值有效性等,确保用户输入符合特定格式要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


function Add_Comma(number) {
    var index;
    var rigthStr = '';
    var tmp = '';
    number = '' + number;
    if(number.indexOf(',')>=0 || number.indexOf('-')>=0)
        return number;
    index = number.indexOf('.');
    if(index>0) {
     tmp = number;
        number = tmp.substring(0,index);
        rigthStr = tmp.substring(index);
    }
    if (number.length > 3) {
        var mod = number.length%3 ;
        var output = (mod > 0 ? (number.substring(0,mod)) : '');
        for (i=0 ; i < Math.floor(number.length/3) ; i++) {
            if ((mod ==0) && (i ==0))
                output+= number.substring(mod+3*i,mod+3*i+3);
            else
                output+= ',' + number.substring(mod+3*i,mod+3*i+3);
        }
        return (output+rigthStr);
    }
    else return number+rigthStr;
}


function Del_Comma(value)
{
    if(value.indexOf(',')>=0)
        value = replace(value,',','');
 if(value.indexOf('.00')>=0)
  value = replace(value,'.00','');
 return value;
}

 


function checkNum(obj,field){
 var n =/^/d+(/./d+)?$/ ;
 if(obj.value!=''){
  if(n.test(obj.value)){
   return true;
  }else{
   //jsMsg = err1MonthlyIncome;
   var mesg=err1;
   var temp = new Array(field);
     var jsMsg = concatMsg(mesg,temp); 
   alert(jsMsg);
   obj.focus();
   obj.value="";
   return false;
  }
 }
}

function digitOnly()
{
   e = window.event;
   if (e.keyCode == 46) {
       if(e.srcElement.value.indexOf(".") >= 0)
           e.keyCode = 0;
   }
   else if (e.keyCode < 48 || e.keyCode > 57) {
       e.keyCode = 0;
   }
}

 

function checkLengthModPrem(obj,field,point){
 var num = parseFloat(obj.value)+"";
 var pointNum = num.indexOf('.');
 if(pointNum>0){
  var num1 = num.substring(0,pointNum);
  var num2 = num.substring(pointNum+1,num.length);
  if(num1.length>10||num2.length>point){
   if(num2.length>point){

    var mesg=err2;
    var temp = new Array('2');
      var jsMsg = concatMsg(mesg,temp); 
    var temp1 = new Array('9,999,999.99');
    jsMsg = concatMsg(jsMsg,temp1);

    alert(jsMsg);
    num2 = num2.substring(0,point);
    obj.value=num1+"."+num2;
    addFormatPoint(obj,point);
    obj.focus();
   }
   if(num1.length>7){

    var mesg=err3;
    var temp = new Array(field,'9,999,999.99');
      var jsMsg = concatMsg(mesg,temp);
    
    alert(jsMsg);
    obj.focus();
    obj.value="";
    return false;
   }
  }
 }else{
  if(num.length>7){
   var mesg=err3;
   var temp = new Array(field,'9,999,999.99');
     var jsMsg = concatMsg(mesg,temp);

   alert(jsMsg);
   obj.focus();
   obj.value="";
   return false;
  }
 } 
 return true;
}

function addFormatPoint(obj,point){
 if(obj.value != ""){
  value = uncommafy(obj.value);
  var num = parseFloat(value)+"";
  var pointNum = num.indexOf('.');
  if(pointNum>0){
   var num1 = num.substring(0,pointNum);
   var num2 = num.substring(pointNum+1,num.length);
   num = commafy(num1)+'.'+num2;
   
   for(i=num2.length;i<point;i++){
    num=num+"0";
   }
   obj.value=num;
  }else{
   num = commafy(num);
   if(point>0){
    num = num+".";
    for(i=0;i<point;i++){
     num=num+"0";
    }
   }
   obj.value=num;
   
  }
 }
}

 

//Replace [i] in jsMsg by inParam
function concatMsg(jsMsg, inParam){
 for(idx_i=0;idx_i<inParam.length;idx_i++){
        var idx = jsMsg.indexOf('['+idx_i+']');
        if (idx!=-1)
            jsMsg = jsMsg.substring(0,idx) + inParam[idx_i] + jsMsg.substring(idx+3);
 }
 return jsMsg;
}

 

                     <html:text  property="payOut_income_amount" styleId="payOut_income_amount"
                     style="text-align: Right" styleClass="textfield" style="text-align: Right" size="10" maxlength="10"
                     onfocus="this.value=Del_Comma(this.value);" onchange="checkNum(this,msgPayAmount);checkLengthModPrem(this,msgPayAmount,'2');"
                     onblur="this.value=Add_Comma(this.value);">                    
                    </html:text>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值