我是菜鸟.
想做个小的专用计算程序.
从INput中取出的是字符串了,不是数字,没法计算.有哪位大侠能帮我?谢谢
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
<style>
.td1 {
border: 1px solid #00CC66;
}
.td2 {
border: 1px solid #72EF6B;
font-family: "Times New Roman", Times, serif;
font-size: 12px;
}
</style>
<script language="javascript">
<!--
//判断输入的是不是数字
function onlyNum(str){
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)||(event.keyCode==110)||(event.keyCode==8)))
event.returnValue=false;
}
//
//进入计算公式
function js(){//确定各种要计算的变量
var gwzc=document.getElementById("gwzc"); //管网总长度
var sdyl=document.getElementById("sdyl"); //始端压力
var sdmd=document.getElementById("sdmd"); //始端密度
var gdcd=document.getElementById("gdcd"); //所要计算的管道长度
var mdyl=document.getElementById("mdyl"); //末端压力
var mdmd=document.getElementById("mdmd"); //末端密度
var zbcd=document.getElementById("zbcd"); //局部阻力当量长度
var dlbf=document.getElementById("dlbf"); //局部阻力当量百分比
alert(isNaN(parseFloat(gwzc.value)));//测试程序的数值传递
//avgbmz.innerHTML=gwzc.value//测试在表格内的输出//第一步:确定主干线的平均比摩阻
//平均比摩阻=(管网的始端和终端的蒸汽压力差Pa)/(主干线总长(m)*(1+局部阻力当量长度百分比))
//局部当量长度一般取0.5%
//alert("始端压力:"+sdyl.value+"管网总长:"+gwzc.value+"末端压力: "+mdyl.value+"局部当量百分比"+dlbf.value)//测试输出
var avg_bmz=(sdyl.value-mdyl.value)*1000000/(gwzc.value*(1+dlbf.value)); //计算平均比摩阻
avgbmz.innerHTML=avg_bmz.toFixed(2);
//第二步:按主干线上压力损失均匀分布来假定管段末端压力
//2010年4月3日
//该管段中的末端压力=该管段的始端压力-(管网始端与末端的压力差/总管网长度)*管段长度
var jdmdyl=sdyl.value-(sdyl.value-mdyl.value)/gwzc.value*gdcd.value
jd_mdyl.innerHTML=jdmdyl.toFixed(2)
//第三步:计算管段中的蒸汽的平均密度
//平均密度=(始端密度+末端密度)*0.5
//alert(isNaN(sdmd.value)+"\n"+mdmd.value)
var avg_md=(sdmd.value+mdmd.value)/2
//alert(avg_md)
avggdmd.innerHTML=avg_md//.toFixed(2)} -->
</script>
</head>
<body>
<table width="800" border="0" cellspacing="0" cellpadding="0" align="center" height="100px">
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>
<table width="800" border="0" cellspacing="0" cellpadding="0" align="center" height="500px">
  <tr valign="top">
    <td><form action="" name="frm1" id="frm1" method="get">
        <table width="800" height="200" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td width="120" height="40" align="center" valign="middle" class="td2">本管网总长度</td>
            <td width="120" height="40" align="center" valign="middle" class="td2"><input name="gwzc" type="text" id="gwzc" size="10" onkeydown="onlyNum(this)" style="text-align:right" />
            </td>
            <td width="34" height="40" align="center" valign="middle" class="td2">m</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">始端压力</td>
            <td width="110" height="40" align="center" valign="middle" class="td2"><input name="sdyl" type="text" id="sdyl" size="10" onkeydown="onlyNum()" style="text-align:right" /></td>
            <td width="35" height="40" align="center" valign="middle" class="td2">Mpa</td>
            <td width="88" height="40" align="center" valign="middle" class="td2"><p>始端密度</p></td>
            <td width="88" height="40" align="center" valign="middle" class="td2"><input name="sdmd" type="text" id="sdmd" size="10" onkeydown="onlyNum()" style="text-align:right" /></td>
            <td width="94" height="40" align="center" valign="middle" class="td2"><p>kg/m<sup>3</sup></p></td>
          </tr>
          <tr>
            <td width="120" height="40" align="center" valign="middle" class="td2">所求管道长度</td>
            <td width="120" height="40" align="center" valign="middle" class="td2"><input name="gdcd" type="text" id="gdcd" size="10" onkeydown="onlyNum()" style="text-align:right" /></td>
            <td width="34" height="40" align="center" valign="middle" class="td2">m</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">末端压力</td>
            <td width="110" height="40" align="center" valign="middle" class="td2"><input name="mdyl" type="text" id="mdyl" size="10" onkeydown="onlyNum()" style="text-align:right" /></td>
            <td width="35" height="40" align="center" valign="middle" class="td2">Mpa</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">末端密度</td>
            <td width="88" height="40" align="center" valign="middle" class="td2"><input name="mdmd" type="text" id="mdmd" size="10" onkeydown="onlyNum()" style="text-align:right" /></td>
            <td width="94" height="40" align="center" valign="middle" class="td2">kb/m<sup>3</sup></td>
          </tr>
          <tr>
            <td width="120" height="40" align="center" valign="middle" class="td2">局部阻力当量长度</td>
            <td width="120" height="40" align="center" valign="middle" class="td2"><input name="zbcd" type="text" id="zbcd" size="10" onkeydown="onlyNum()" style="text-align:right" /></td>
            <td width="34" height="40" align="center" valign="middle" class="td2">m</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">假定末端压力</td>
            <td width="110" height="40" align="center" valign="middle" class="td2" id="jd_mdyl">&nbsp;</td>
            <td width="35" height="40" align="center" valign="middle" class="td2">Mpa</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">管段平均密度</td>
            <td width="88" height="40" align="center" valign="middle" class="td2" id="avggdmd">&nbsp;</td>
            <td width="94" height="40" align="center" valign="middle" class="td2">kb/m<sup>3</sup></td>
          </tr>
          <tr>
            <td width="120" height="40" align="center" valign="middle" class="td2">局部阻力当量百分比</td>
            <td width="120" height="40" align="center" valign="middle" class="td2"><input name="dlbf" type="dlbf" id="dlbf" size="10" onkeydown="onlyNum()" style="text-align:right" value="0.5" /></td>
            <td width="34" height="40" align="center" valign="middle" class="td2">%</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="110" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="35" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="94" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
          </tr>
          <tr>
            <td width="120" height="40" align="center" valign="middle" class="td2">主干线平均比摩阻</td>
            <td width="120" height="40" align="center" valign="middle" class="td2" id="avgbmz">&nbsp;</td>
            <td width="34" height="40" align="center" valign="middle" class="td2">Pa/m</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="110" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="35" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="88" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
            <td width="94" height="40" align="center" valign="middle" class="td2">&nbsp;</td>
          </tr>
        </table>
<table width="800" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center"><input type="button" value="计算" onclick="js()" />&nbsp;&nbsp;<input type="reset" value="清除" /></td>
  </tr>
</table>      </form></td>
  </tr>
</table>
<table width="800" border="0" cellspacing="0" cellpadding="0" align="center" height="100px">
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</html>

解决方案 »

  1.   

    把输入框的input换成
        <input onkeypress="return event.keyCode>=48&&event.keyCode<=57||event.keyCode==46" onpaste="return!clipboardData.getData('text').match(/\D/)" style="ime-mode:Disabled" ondragenter="return false">
      

  2.   

    用正则吧:function onlyNum(str){
     if(/^[0-9]+$/i.test(str)){
       alert("is a number");
     }else{
      alert("not a number");
    }}
      

  3.   

    改成这样<input name="gwzc" type="text" id="gwzc" size="10" onkeypress="onlyNum(this)" style="text-align:right;"/>
    输入数字,显示not a number,不知要这样处理
      

  4.   

    onkeypress="onlyNum(this.value)" 换成 onkeyup="onlyNum(this.value)"
    onkeypress是按键按下的时候,此时文本框里还没有值,用onkeyup就可以了
      

  5.   

    onkeyup="onlyNum(this.value)"  这样判断很正确啊.
    我出的问题是在程序取出文本框中取出的数字是字符串,没加法加入数学算法.可能我的问题没有说清楚.
    要怎么样,取出的字符串变成数字?用Number吗?
      

  6.   

    哦,两种方法都可以:
    function onlyNum(str){
     str = parseInt(str);//字符串转换为数字
     //或者:
     str = str-"0";//这样也可以把str转换为数字 if(/^[0-9]+$/i.test(str)){
       alert("is a number");
     }else{
      alert("not a number");
    }}
      

  7.   

     if(/^[0-9]+$/i.test(str)){
      alert("is a number");
     }else{
      alert("not a number");
    }
    小数点没有办法输入了.
      

  8.   

     if(/^(\d+\.\d+|\d+)$/i.test(aa)){
       alert("is a number");
     }else{
      alert("not a number");
    }这样最好...
    下班啦!