我用onchange检查了输入框中输入的内容,发现不符合要求,就清空,焦点移动到下一个输入框,问题来了,我现在立刻在原来的输入框输入一个同样的内容,结果居然没有触发onchange。  我清空了呀,为什么没有触发呢,怎么办例:输入框input1 和 input2   ,点击input1,输入数字9,触发onchange,检查后发现超限了,则清除
<SCRIPT LANGUAGE="JavaScript">
<!--
function abc(){
 if (input1.value>5){
    input1.value="";
 } 
}//-->
</SCRIPT>
<BODY>
<INPUT TYPE="text" NAME="input1" onchange='abc()'><INPUT TYPE="text" NAME="input2" onchange='abc()'>

解决方案 »

  1.   

    input1 失去焦点后是可以触发onchange清空的
    如果要即时清空,可用onpropertychange
      

  2.   

    onchange必须失去焦点才触发。
      

  3.   

    用onpropertychange吧,可以响应以下内容转自:http://blog.csdn.net/gavin_ku/archive/2008/04/18/2303459.aspx当一个HTML元素的属性改变的时候,都能通过onpropertychange来捕获。例如< input name="text1" id="text1" />对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。    具体理解为:onpropertychange能及时捕获属性值的变化,而onchange在属性值改变时只有通过鼠标执行某些操作才能激活该事件!
     
        但onpropertychange只有IE支持,FireFox下的怎么解决呢?firefox的事件oninput,效果和IE的onproperchange相同。
      

  4.   

    我现在立刻在原来的输入框输入一个同样的内容==>没有改变的。所以用onblur
      

  5.   

    onchange必须是失去焦点后才能触发,也就是说:在控件获得焦点时的值与失去焦点时的值不一样才会触发。如果不想失去焦点后才触发就使用onpropertychange吧