一个按钮,一个文本框,点击按钮,通过代码document.getElementById('text').value='hello',使文本框的数值变为了hello。但是文本框的onchange="alert(123)"的事件并没有激发,请问,怎样修改,才能使得通过代码document.getElementById('text').value='hello'的方式,能让文本框感觉到自己的
数值改变,从来激发某种事件呢?onchange好像不行。注:使文本框内容的改变不是通过键盘输入的,这样我知道可以用keyup来获取,就是想通过其它按钮静态改变此文本框数值的。先给100分,不够在增加,万分感谢。简单的代码如下:<html>
<body>
<input type="text" onchange="alert(123)"  id="text">
<input type="button" value="submit" onclick="document.getElementById('text').value='hello'">
</body>
</html>

解决方案 »

  1.   

    <html>
    <body>
    <input type="text" onpropertychange="alert(123)"  id="text">
    <input type="button" value="submit" onclick="document.getElementById('text').value='hello'">
    </body>
    </html>
      

  2.   

    onchange事件的顺序是 文本框获焦 --> 失焦 --> onchangedocument.getElementById('text').value='hello' 这个没有让 id为test的文本获取焦点,所以test虽然value改变了,但是没有触发onchange
      

  3.   

    onpropertychange
    oninput用这两个~·一个是IE的一个FF的~·
      

  4.   

    谢谢高手指点,
    IE用onpropertychange可以
    但是FF用oninput不行啊,没反应
    谢谢。FF代码如下:<html>
    <body>
    <input type="text" oninput="alert(123)"  id="text">
    <input type="button" value="submit" onclick="document.getElementById('text').value='hello'">
    </body>
    </html>
      

  5.   

    <input type="text" oninput="alert('aaa')" onpropertychange="alert('bb')"  />ok~·
      

  6.   

    onpropertychange FF 不支持! IE 没问题其实事件调用的就是一个方法,自己调用一次就OK!<html>
    <body>
    <input type="text"  id="text">
    <input type="button" value="submit" id='btn'><script> 
    var txtInput = document.getElementById('text');
    var btn=document.getElementById('btn');
    if(document.all){
    txtInput.onpropertychange=fn;
    }else{
    txtInput.oninput=fn;
    }
    btn.onclick=function(){setValue('hello'); };
    function setValue(v){
    if(v==txtInput.value) return;
    txtInput.value = v;
    if(!document.all){fn();}
    }
     function fn(){
      alert("changed");
    }
    </script>
    </html>
      

  7.   

    <input type="text" name="textfield" id="mytext" /> 
    <script type="text/javascript">
    function immediately(){ 
    var element = document.getElementById("mytext"); 
    if(document.all) { 
    element.onpropertychange = webChange; 
    }else{ 
    element.addEventListener("input",webChange,false); 
    } function webChange(){ 
    if(element.value){alert(11)}; 

    } immediately()
    </script>
      

  8.   

    [Quote=引用 2 楼 knightzhuwei 的回复:]
    HTML code
    <html>
    <body>
    <input type="text" onpropertychange="alert(123)"  id="text">
    <input type="button" value="submit" onclick="document.getElementById('text').value='hello'">
    </body>
    </html>
    ……
      

  9.   

    <table  class="table_01"  id="table_01">
                     <tr bgcolor="#99CC00">
                       <td bgcolor="#FEFEFE"> </td>
                       <td>科目</td>
                       <td>一月</td>
                       <td>二月</td>
                       <td>三月</td>
                       <td>四月</td>
                       <td>五月</td>
                       <td>六月</td> 
                       <td>七月</td>
    <td>八月</td>  
    <td>九月</td> 
       <td>十月</td> 
       <td>十一月</td>
       <td>十二月</td> 
       <td>Total</td>
     </tr>
    <tr>
    <td>  房租</td> 
     td><input type="text" value="${finance.rent[0]}"  id="1FZ"   size=2 style="border:0px;" /> </td>
    <td><input type="text" value="${finance.rent[1]}"  id="2FZ"   size=2 style="border:0px;" /></td>
    </tr>
    <tr>
     <td>物业管理费</td>
    <td><input type="text" value="${finance.managementFee[0]}" id="1WY" size=2 style="border:0px;" /></td>
    <td><input type="text" value="${finance.managementFee[1]}" id="2WY" size=2 style="border:0px;" /></td>
    </tr>
    <tr>
    <td>其他办事处及公司宿舍租金</td>     
    <td><input type="text" value="${finance.otherOfficeAndCompanysRent[0]}" id="1ZJ" size=2 style="border:0px;" /></td>
    <td><input type="text" value="${finance.otherOfficeAndCompanysRent[1]}" id="2ZJ" size=2 style="border:0px;" /></td>
    </tr>
    <tr>
    <td>公司开会酒店食宿会务费用</td>
    <td><input type="text" onblur="getAggregate(this)" id="1KH" size=2 style="border:0px;"/></td>
    <td><input type="text" onblur="getAggregate(this)" id="2KH" size=2 style="border:0px;"/></td>
    </tr>
    <tr>
    <td>员工福利费(社保补贴)</td>
    <td><input type="text" onblur="getAggregate(this)" id="1SBBT" size=2 style="border:0px;"/></td>
    <td><input type="text" onblur="getAggregate(this)" id="2SBBT" size=2 style="border:0px;"/></td>
    </tr>
    <tr>
    <td>员工福利费(手机补贴)</td>
    <td><input type="text" onblur="getAggregate(this)" id="1SJ" size=2 style="border:0px;"/></td>
    <td><input type="text" onblur="getAggregate(this)" id="2SJ" size=2 style="border:0px;"/></td>
    </tr>
    <tr>
    <td>员工福利费(住房补贴)</td>
    <td><input type="text" onblur="getAggregate(this)" id="1ZF" size=2 style="border:0px;"/></td>
    <td><input type="text" onblur="getAggregate(this)" id="2ZF" size=2 style="border:0px;"/></td>
    </tr>

    <tr>
    <td>员工福利费(车贴)</td>
    <td><input type="text" onblur="getAggregate(this)" id="1CT" size=2 style="border:0px;"/></td>
    <td><input type="text" onblur="getAggregate(this)" id="2CT" size=2 style="border:0px;"/></td>
    </tr><tr>
    <td>员工活动费</td>
     
    <td><input type="text" value="${finance.staffActivities[0]}" id="1HD"  size=2 style="border:0px;"/></td>
    <td><input type="text" value="${finance.staffActivities[1]}" id="2HD"  size=2 style="border:0px;"/></td>
    </tr>

    <tr>
    <td>员工学习及培训费</td>
    <td><input type="text" value="${finance.learningAndTraining[0]}" id="1PX" size=2 style="border:0px;" /></td>
    <td><input type="text" value="${finance.learningAndTraining[1]}" id="2PX" size=2 style="border:0px;" /></td>
    </tr>
    <tr>
    <td>财务费用</td>
    <td><input type="text" onblur="getAggregate(this)" id="1CW" size=2 style="border:0px;"/></td>
    <td><input type="text" onblur="getAggregate(this)" id="2CW" size=2 style="border:0px;"/></td>
    </tr>

    <tr>
    <td>工资</td>
    <td><input type="text" onblur="getAggregate(this)" id="1GZ" size=2 style="border:0px;"/></td>
    <td><input type="text" onblur="getAggregate(this)" id="2GZ" size=2 style="border:0px;"/></td>
    </tr>

    <tr>
    <td>佣金</td>
    <td><input type="text" onblur="getAggregate(this)" id="1YJ" size=2 style="border:0px;"/></td>
    <td><input type="text" onblur="getAggregate(this)" id="2YJ" size=2 style="border:0px;"/></td>
    </tr>
    <tr>
    <td>期间费用合计</td>
    <td><input type="text" id="1HJ" readonly="readonly" size=3 style="border:0px;"/></td>
    <td><input type="text" id="1HJ" readonly="readonly" size=3 style="border:0px;"/></td>
    </tr>房租 、物业管理费、 其他办事处及公司宿舍租金、 员工活动费、 员工学习及培训费这五项是从数据库查询出来的,
    公司开会酒店食宿会务费用、员工福利费(社保补贴)、员工福利费(手机补贴)、员工福利费(住房补贴)、员工福利费(车贴)、财务费用、工资、佣金
    这八项是手填的。期间费用合计是等于 从数据库查询出来的五项 加上 手填的八项。
    用js怎么去写的实现方法。
      

  10.   

    var BrowserObj = new Object();
    BrowserObj={
    showValue:function (){
    $id("text-size").innerHTML = $o("title-text").value;
    },
    Browser:function(){
    if(/msie/i.test(navigator.userAgent)){
    $id("title-text").onpropertychange=this.showValue;
    }else{
    $id("title-text").addEventListener("input",this.showValue,false)
    }
    }
    }
    BrowserObj.Browser()onpropertychange onpropertychange能及时捕获属性值的变化,但是只支持IE,火狐并不支持,需要用addEventListener来注册事件
      

  11.   

    onchange事件是在文本框发生改变并且失去焦点的时候才触发的,你应该用 onfocus  获得焦点事件
    因为赋值的话文本框肯定会得到焦点的