`
cqh520llr
  • 浏览: 510258 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

小数点金额验证

 
阅读更多
<script>
//将字符串换成便于观察的格式:srcStr: 要转化的字符串 divNum:分隔位数, dotNum:小数位数 
function formatNum(srcStr,divNum,dotNum)
{   
	  srcStr = ""+srcStr+"";
    strLen = srcStr.length;
    var resultStr="";
    //判断是否为数字
    if(isNumber(srcStr) != true){
    	 alert("输入的内容必需是有效的数字!");
         return srcStr;
    }
    //长度为空不处理
    if(strLen == 0  || (parseFloat(srcStr) == 0)){
    	 resultStr ="0.";
    	 for (i=0;i<dotNum;i++){
          resultStr = resultStr+"0";
        }
   return resultStr;
    }
  dotPos = srcStr.indexOf(".",0);
    if (dotPos == -1){
    	      //处理整数的情况
    	      resultStr = divIntNum(srcStr, divNum);
    	      resultStr = resultStr + ".";
            for (i=0;i<dotNum;i++){
          resultStr = resultStr+"0";
        }
        return resultStr;
  }else{
             //处理小数的情况
        strBfDot = srcStr.substr(0, dotPos);
        strAftDot = srcStr.substr(dotPos + 1, srcStr.length);
        resultStr = parseFloat(strBfDot)+parseFloat(divDecimalNum(strAftDot, dotNum))/100;
        resultStr = resultStr + "";
        dotPos = resultStr.indexOf(".");
        if (dotPos == -1) {
        	resultStr = divIntNum(resultStr, divNum) + ".00";
        } else {
        	strBfDot = resultStr.substr(0, dotPos);
          strAftDot = resultStr.substr(dotPos, resultStr.length);
          while (strAftDot.length < 3) {
          		strAftDot+="0";
          }
        	resultStr = "" + divIntNum(strBfDot, divNum) + strAftDot;
        }
        return resultStr;
      }
}

//对于格式化后的数据进行还原
function formatNum2(srcStr){
	var obj = event.srcElement;    
    var txt =obj.createTextRange();    
    txt.moveStart('character',obj.length);    
    txt.collapse(true);    
    txt.select();
    return srcStr.replaceAll(",","");
}

//整数部分处理
function divIntNum(srcStr, divNum){
    var len=srcStr.length;
    var result ="";
    if(len == 0){
           return 0;
    }else{
       while(len>divNum)
       { 
       	   result = "," + srcStr.substr(len-divNum) + result; 
           srcStr = srcStr.substr(0, len-divNum);
           len=len-divNum;
       }
          result = srcStr + result;
       }
    return result;
}

//小数部分处理
function divDecimalNum(strAftDot, dotNum){
	  resultStr ="";
	  if(strAftDot.length > dotNum){
         nTen =1;
	     for(j=0;j<dotNum;j++){
	       nTen = nTen*10;
	     }
	    resultStr = resultStr + Math.round(parseFloat("0." + strAftDot)*nTen);
		  while(resultStr.length<dotNum){
		      resultStr ="0" + resultStr;
		 }
        }else{
        	 resultStr = strAftDot;
        	 for (i=0;i<dotNum - strAftDot.length;i++){
          resultStr = resultStr +"0";
        }
        }
        return resultStr;
   }
   //判断是否为数字
   function isNumber(srcStr){
   	  var re =/^(([1-9]\d*)|0)[\.]?\d*$/;
   	  return re.test(srcStr);
   }
   String.prototype.replaceAll  = function(s1,s2){     
		return this.replace(new RegExp(s1,"gm"),s2);     
	 }
   function chkPrice(obj) {
		if (obj.value == '') {
			return;	
		}
		if (!isNumber(obj.value.replaceAll(",",""))) {
				if(ckgHF(obj)) {
					alert("温馨提示:输入的金额格式不正确!");
				} else {
					alert("温馨提示: 请输入有效的金额!");
				}
				obj.value = "";
				obj.focus();
		} else {
			if(ckgHF(obj)) {
					alert("温馨提示:输入的金额格式不正确!");
					obj.value = "";
				obj.focus();
				} else {
					obj.value=formatNum(obj.value.replaceAll(",",""),3,2);
				}
		}
	}
function ckgHF(obj) {
	try {
		var inp = obj.value;
		if (inp != '') {
			if (inp.substring(0,1) == ",") {
				return true;
			}
			if (inp.indexOf(".") != -1) {
				inp = inp.substring(0,inp.indexOf("."));
			}
			inp=inp.split("").reverse().join("");
			var ind = -1;
			while((ind=inp.indexOf(",")) != -1) {
				if (ind<3 || (ind+1)%4 != 0) {
					 return true;
				} else {
					 inp = inp.replace(",", "R");
				}
			}
		}
		return false;
	} catch (e) {
		return true;	
	}
}
function bchkPrice(obj) {
		if (obj.value == '') {
			return;
		}
		obj.value=formatNum2(obj.value);
	}
	//对于格式化后的数据进行还原
function formatNum2(srcStr){
	var obj = event.srcElement;    
    var txt =obj.createTextRange();    
    txt.moveStart('character',obj.length);    
    txt.collapse(true);    
    txt.select();
    return srcStr.replaceAll(",","");
}
</script>
<input type="text" onblur="chkPrice(this)" onfocus="bchkPrice(this)"/>
分享到:
评论

相关推荐

    验证文本框只能输入数字和小数点

    例如,在处理金额或重量等数值时,我们通常希望用户只能输入数字以及最多一个小数点,并且小数点不能出现在首位。这种校验机制对于提高数据的准确性和减少后续处理错误具有重要意义。 #### 二、需求分析 根据给定...

    H5微信支付金额键盘带小数点

    3. **正则表达式验证**:对用户输入的金额进行实时验证,确保其符合支付金额的规则,例如最小值、最大值以及小数点后最多两位等。 4. **键盘动画效果**:为了提升用户体验,键盘的弹出和收起可以添加过渡动画,使其...

    正则表达式验证金额格式

    在本场景中,我们关注的是如何使用正则表达式来验证金额格式。金额格式通常要求精确到小数点后两位,并且可能包含正负号。下面将详细介绍如何构建一个适用于这种需求的正则表达式。 首先,让我们了解一个基本的正则...

    input限制输入数值金额数值小数点符号

    特别是对于金融或商业相关的应用,确保用户输入的是有效的数值金额,包括小数点符号,是非常重要的。在这个问题中,我们需要关注如何使用CSS来限制`input`字段中的输入格式,确保它符合数值金额的标准。 首先,我们...

    HTML5微信支付宝金额键盘带小数点

    同时,HTML5的`&lt;form&gt;`标签和新的表单元素(如`&lt;input type="number"&gt;`)提供了更强大的数据验证和用户输入控制功能,可以确保用户输入的金额格式正确。 2. **JavaScript事件处理**:为了让键盘与页面交互,我们...

    javaScript中金额的有效判断

    3. **前端与后端双重验证**:虽然前端验证可以提供即时反馈,但为了安全起见,还需要在后端再次验证金额的有效性。 通过以上知识点的介绍,我们可以看到在JavaScript中实现对金额的有效判断不仅可以提高系统的安全...

    只能输入数字小数点负号正则

    在实际的软件开发过程中,经常需要对用户输入的数据进行合法性验证,尤其是涉及到金额或数值型数据时,确保用户输入的是合法的数字格式显得尤为重要。本文将详细介绍一个特定的正则表达式应用场景——如何使用正则...

    java 正则数字金额转换为大写

    输入字符,通过正则验证是否为金额不超过万亿精确到小数点后两位,然后将数字转换为大写 包括后台java正则验证及前台js验证 请输入一个数字(精确到小数点后两位): fdsa54325.54 fdsa54325.54 false 请输入一个...

    移动端html5带小数点的数字软键盘

    在移动端HTML5开发中,为用户提供一个能够输入带有小数点的数字的软键盘是非常常见的需求,特别是在金融、电商等需要处理金额的场景。本文将详细介绍如何实现这样的功能,并探讨相关技术点。 首先,HTML5在移动设备...

    c#使用正则表达式验证两位小数

    在C#编程中,正则表达式是一种强大的文本匹配工具,可以用来验证字符串是否符合特定的模式。在本例中,我们关注的是如何使用正则表达式来验证一个数字是否精确到两位小数。这对于处理财务数据、计算或输入验证等场景...

    C#财务数字判断,判断是否有美元,小数点精度可以改变

    这个程序首先检查输入字符串是否包含美元符号,然后尝试解析为`decimal`类型并四舍五入到两位小数,最后用正则表达式验证小数点后的位数。 学习和掌握这些基本概念,可以帮助你编写出更专业、更健壮的财务计算代码...

    Android金额输入控件

    1. **输入验证**:我们需要确保用户只能输入数字和小数点。可以使用正则表达式检查输入内容,例如`^\\d*\\.?\\d*$`,这个正则表达式允许输入零个或多个数字,后面可选一个小数点,小数点后也可以跟零个或多个数字。...

    小写金额转换成大写金额

    需要注意的是,这个函数假设输入的金额字符串是合法的,即只有数字和小数点,没有其他非法字符。在实际应用中,可能还需要增加对输入的验证和错误处理。 以上就是使用PowerBuilder编写小写金额转换成大写金额的函数...

    一行代码搞定整站的表单验证js代码

    17. **金额验证**:验证货币格式,可能包括逗号分隔的千位符。 18. **自定义正则验证**:允许开发者根据需要定义自己的验证规则。 19. **唯一性验证**:检查输入是否在数据库中已存在,防止重复。 20. **颜色代码...

    VC++金额编辑框

    为了保证数据的正确性,金额编辑框应具备验证功能,检查输入是否合法,例如检查数值范围、小数点位置等。错误发生时,可以通过弹出对话框或者改变控件样式来提示用户。 6. **国际化支持** 如果程序需要支持多语言...

    测试面试题-测试场景设计

     金额验证  输入单笔金额的最大、最小值  金额限定小数点最后2位  支付金额不能为空、0、负数  单日成交最大限额  如果是固定金额支付,验证篡改金额是否能成功支付(一般支付接口有签名验证,防止篡改)  ...

    C# - 阿拉伯数字金额转换为繁体数字金额

    考虑到金额通常包括小数部分,我们还需要处理小数点。在繁体中文中,小数点通常被写作“點”或“.”,根据业务需求选择合适的表示。在转换过程中,我们需要找到小数点的位置,并分别处理整数和小数部分。 为了提高...

    JS文本框只允许输入数字小数点

    这样的需求在处理金额、百分比等数值输入时尤为常见。"JS文本框只允许输入数字小数点"这个话题就围绕着如何使用JavaScript来实现这样一个功能。 首先,我们需要理解HTML中的`&lt;input&gt;`元素,它是用来创建表单字段的...

    c#实现大小写金额转换

    在IT领域,尤其是在软件开发与财务系统中,将数字金额转换为中文大写金额是一项常见的需求,尤其是在中国。...开发者在实际应用中,还应考虑输入数据的有效性验证和异常处理,以确保转换过程的稳定性和准确性。

    js验证表单大全.doc

    - **功能**:检查输入的字符串是否符合金额格式,即带小数点的正数,且小数点后最多三位。 - **参数**:`s`表示待验证的金额字符串。 - **返回值**:如果字符串为有效的金额格式,则返回`true`,否则返回`false`...

Global site tag (gtag.js) - Google Analytics