百分比与数字之间计算

	 function returnFloatText(value)
	 {
		value = value.replace(/\.0+$/g, "");
		value = value.replace(/^0$/g, "");
		value = value.replace(/,/g, "");
		if(value.indexOf('.') != -1) {
			value = value.replace(/0+$/g, "");
		}
		if(value == "")
		{
			return 0;
		}
		return parseFloat(value);
	 }

	    function checkNum(obj){
		obj.value = obj.value.replace(/\.{2,}/, '.');
		obj.value = obj.value.replace(/\.+$/, '');
		//alert(obj.value);
     //if(obj.value == "."||obj.value == ".."||obj.value == "..."||obj.value == "...."||obj.value == "....."
     	//||obj.value == "......"||obj.value == ".......") {
     	//obj.value = 0;
     //}
   		 }

    	function checkAcount(obj,contractPrice){
		var percent = obj.value;
		if('' != (''+percent) && '0' != (''+percent)){
			if((""+obj.value).substring(0,1) == "0" && (""+obj.value).substring(0,2)!= '0.'){
				alert("数字格式不对!");
				obj.value = "";
				return;
			}
		}
		if(percent < 0 || percent > 100){
			alert("百分比应该在0——100之内!");
			obj.value = 0;
		}
		setValue(obj, contractPrice);
		}

	function validataAcount(obj,contractPrice){
		var numAcount = returnFloatText(obj.value);
		if(numAcount < 0 || numAcount > returnFloatText(contractPrice)){
			alert("金额数应该大于0,小于合同标的金额!");
			obj.value = 0;
		}
		setPercent(obj, contractPrice);
	}


     function setPercent(elt, mumm){
     	var el = eval("document.forms[0]."+elt.name+"Percent");
     	var val = calculatePercent(elt.value, mumm)*100.0;
     	val=Math.round(val*10000)/10000;
		var strVal = val+"";
		if(strVal.indexOf('.')>=0){
			var len = strVal.indexOf('.')+5;
			strVal = strVal.substring(0,len);
		}else{
			el.value = val;
			return;
		}
     	el.value = strVal;
     	return;
     }

     function calculatePercent(value, mumm){
     	var val = returnFloat(value);
     	var mum = returnFloat(mumm);
     	if(mum==0.0){
     		return 0.0;
     	}else{
     		if(val/mum < 0.000001){
     			return 0.0;
     		}
     		return formatFloat(val/mum+"");
     	}
     }

     function setValue(elt, factor){
     	var el = eval("document.forms[0]."+elt.name.substring(0,elt.name.length-("Percent".length)));
     	el.value = calculateValue(elt.value, factor);
     }

     function calculateValue(percent, factor){
     	var per = returnFloat(percent);
     	var fac = returnFloat(factor);
     	var result = (per*fac)/100.0 + "";
     	return formatFloat(parseFloat(result).toFixed(2));
     }
								<input type="text" name="contractPrice" style="text-align:right"
									class="flat_u" size="25"
									value="100" />

									<input type="text"
								name="advancePaymentPercent"
								style="text-align:right"
								onchange="checkNum(this);checkAcount(this,contractPrice.value);"
								onkeypress="return event.keyCode>=48&&event.keyCode<=57||event.keyCode==46"
								onkeydown="if(event.keyCode==13)event.keyCode=9"
								onfocus="initText(this)" class="flat_u" size="25" maxlength="6"
								onblur="checkNum(this);"
								value="" />
								<br>
									<input type="text"
								name="advancePayment" style="text-align:right" class="flat_u"
								onchange="validataAcount(this,contractPrice.value);"
								onkeypress="return event.keyCode>=48&&event.keyCode<=57||event.keyCode==46"
								onfocus="initText(this)" onblur="formatNumberScope(this,2);"
								size="25" maxlength="15"
								value="" />

猜你喜欢

转载自forlab.iteye.com/blog/1744251