form1里有5个文本框,t1,t2,t3,t4,t5.
其中t1、t3都有默认值。
t4.value=t2.value*t3.value,这个值是用onKeyUp="show(this.value),在t2输入数字的时候,自动显示t4的值。
t5.value=t1.value-t4.value.,怎样在t4的值自动显示的时候,t5的值也自动计算呢?
在t4里试用了一下onchange事件,不管用。

解决方案 »

  1.   

    如果只在IE上.可以考虑onpropertychange如果综合情况.
    直接在t2计算的时候计算t5
      

  2.   

    function show(strValue)
    {
        document.getElementById("t4").value = parseFloat(document.getElementById("t3").value)+parseFloat(strValue);
    document.getElementById("t5").value = parseFloat(document.getElementById("t1").value)-parseFloat(document.getElementById("t4").value);
    }
      

  3.   

    IE下用t4的onpropertychange;
    FF下自己写个定时检测t4值变化的函数,类似ie的onpropertychang;
    还有就是,在t2的onkeyup()里一次性直接计算t5:
    var temp=t2.value*t3.value;
    t4.value=temp;
    t5.value=t1.value-temp
      

  4.   

    谢谢楼上各位。在没有获得焦点的情况下,使用:onpropertychangeIE下,当一个HTML元素的属性改变的时候,都能通过 onpropertychange来捕获。例如一个 
    <input name="text1" id="text1" />
    对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。
    也就是说:onpropertychange能及时捕获属性值的变化,而onchange在属性值改变时还必须使得当前元素失去焦点(onblur)才可以激活该事件!
      

  5.   

    没错,onchange在拷贝数据粘贴到输入框的时候也没作用,这就是我建议你IE下用onpropertychange,考虑兼容的话,在FF下自己写个定时检测输入框值变化的函数的用意
      

  6.   

    用onpropertychange 也可以的
    但你还得写一个函数直接在t2的文本框改变值的时候做也可以!
      

  7.   

    按照LZ的意思,这样子就可以达到效果
    var temp=t2.value*t3.value; 
    if(t4.value!=temp){
        t4.value=temp; 
        t5.value=t1.value-temp;//当t4值改变时计算t5
    }