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="" />