你可以用另外一个事件: onpropertychange 代替你的 onkeyup (IE里有效)

解决方案 »

  1.   

    <input onkeyup="调用实时计算的方法">只有当你键盘松开的时候(也就是onkeyup事件),程序才知道你到底敲了什么数。所以你应该用onkeyup这个事件
      

  2.   

    onpropertychange 代替 onkeyup 
    你如果用了onkeyup就是在输入的时候(不一定是输入结束)得出结果,用onpropertychange就等于在完全改变,失去焦点的时候执行你的调用实时计算的方法,你试试看!
      

  3.   

    meizz前辈:
        我试着改了一下,不过发现问题仍然存在,还有当输入100时,输入"1"以后,焦点消失,必须再点一下,也就是说,每输入一次,焦点就自动消失;不知道应该怎么解决?
      

  4.   

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>author:meixx</title>
    <style type="text/css">
    .input1{background-color:#FFFFEF; width:100%; text-align:right }
    .input2{background-color:#ECECEC; width:100%; text-align:right; }
    </style>
    <script language="javascript">
    function keyPressInt(){
    var e=window.event;
    code=e.keyCode;
    if(code >=48 && code <=57)  return true;
    else  {window.event.returnValue=false;return false;}
    }
    function doPaste(){
    var txt=window.clipboardData.getData("text");
    if(/\d/.test(txt)) return true;
    else window.event.returnValue=false;
    }
    function Calculate(txtObj){
    var tb=document.all.tbCal;
    //计算横向求和
    calRow(tb,txtObj);
    //竖向求和
    calCell(tb,txtObj);
    //总和
    calRow(tb,tb.rows[tb.rows.length-1].cells[1].children[0]);
    }
    function calRow(tb,txtObj){
    var sum=0;
    var rowindex=txtObj.parentElement.parentElement.rowIndex;
    //alert(rowindex);
    for(var i=1; i<11;i++)
    sum+=parseInt(nullToZero(tb.rows[rowindex].cells[i].children[0].value),10);
    tb.rows[rowindex].cells[11].children[0].value=sum;
    }
    function calCell(tb,txtObj){
    var sum=0;
    var cellindex=txtObj.parentElement.cellIndex;
    //alert(cellindex);
    for(var i=1; i<tb.rows.length-1;i++)
    sum+=parseInt(nullToZero(tb.rows[i].cells[cellindex].children[0].value),10);
    sum=parseInt(nullToZero(tb.rows[0].cells[cellindex].children[0].value,10))-sum;
    tb.rows[tb.rows.length-1].cells[cellindex].children[0].value=sum;
    }
    function initTable(){
    /* var text=document.getElementsByName("textfield");
    for(var i=0;i<text.length;i++)
    text[i].value=0;
    */
    }
    function nullToZero(str){
    return (str==""?"0":str);
    }
    </script>
    </head><body onLoad="initTable()">
    <table id="tbCal" width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse " bordercolor="#000000" border="1">
      <tr>
        <td width="4%">应付费用</td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="6%"><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td width="8%"><input type="text" name="textfield" class="input2" readonly="readonly"></td>
      </tr>
      <tr>
        <td>单位1</td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
      </tr>
      <tr>
        <td>单位2</td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
      </tr>
      

  5.   


      <tr>
        <td>单位3</td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
      </tr>
      <tr>
        <td>单位4</td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
      </tr>
      <tr>
        <td>单位5</td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
      </tr>
      <tr>
        <td>单位6</td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input1" onpropertychange="Calculate(this)" onKeyPress="keyPressInt()" onpaste="doPaste()"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
      </tr>
      <tr>
        <td>项目盈亏</td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
        <td><input type="text" name="textfield" class="input2" readonly="readonly"></td>
      </tr>
    </table></body>
    </html>
      

  6.   

    我不怎么会htc,如果用htc来做的话,代码要精简的多了
      

  7.   

    谢谢前辈,但是我的这个程序页面并不是规则的表格,例如:在第3,4行之间有一个隐藏的表单,点击打开,写入费用明细,而且还不止这一个,我将你的代码复制过去(做了一些改动)但是在这种情况之下,表格元素应该如何定位呢?行和列?当插入了<rowspan>或者<colspan>标签以后?请教!!!
      

  8.   

    谢谢zhaoxiaoyang(梅雪香@hisoft) 问题已解决!