function Edit1Change()
{
alert("dd");
}
<form action="#" name="g">
<input name="Edit1"  style="width:260" type="text" onchange="return Edit1Change();">
</input> 
</form>当我改变input值的时候,必需得点一下空白处,才能触发Edit1Change()事件,请问为什么?有什么办法当input值改变的时候就触发呢?

解决方案 »

  1.   

    onpropertychange在IE中是可以的但是在FF浏览器中不会起作用。
    采用oninput,只是键盘输入改变才会出发,如果是JS改变不会触发。
    最好的办法是:获得焦点的时候,记住原来文本框内的内容,然后当失去焦点的时候,将记住的原始内容和现在的内容,进行比对,如果相同则认为没有发生变化,如果不相同,则认为发生了变化。
      

  2.   

    onKeyUp,在按键松开后就会触发该事件
      

  3.   

    学习了!
    光用key的up。down事件的话,如果我用鼠标操作粘贴一段内容进去还是不触发事件的,嗯。。看来漏洞无法弥补啊
      

  4.   

    onpropertychange在ie和遨游都可以呀,一定要使用Firefox吗。没有完全之策的。
      

  5.   

    使用oninput来缓解一下FireFox下的问题吧,但是这个也是复制时候不能触发。
    你就先凑合着吧,起码在IE下完全解决了。如下:
    <input name="Edit1"  style="width:260" type="text" oninput="return Edit1Change();"  onpropertychange="return Edit1Change();"> 
      

  6.   

    你试试这个在文本框输入数据的时候,当键盘按下并放开的时候可以使用onkeyup来检测事件,onpropertychange能够捕获每次改变,而onchange需要执行某个事件才可以捕获。可是有的时候我们输入数据是采用粘贴的方式而不是键盘输入,这就需要实时检测文本框状态的改变。
    onpropertychange 不被firefox所支持,如果想在firefox下正常使用,需要用oninput属性,且需要用addEventListener来注册事件。
    <html> 
    <body> 
    <div>oninput测试</div> 
    <div id="testdiv"><input id='tx1' name="tx1" value="" /></div> 
    </body> 
    </html> 
    <script language="JavaScript"> 
    <!-- 
    function getOs(){//判断浏览器类型 
    var OsObject = ""; 
    if(navigator.userAgent.indexOf("MSIE")>0) { 
    return "MSIE"; 

    if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ 
    return "Firefox"; 

    if(isSafari=navigator.userAgent.indexOf("Safari")>0) { 
    return "Safari"; 

    if(isCamino=navigator.userAgent.indexOf("Camino")>0){ 
    return "Camino"; 

    if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){ 
    return "Gecko"; 


    if(navigator.userAgent.indexOf("MSIE")>0){ 
    document.getElementById('tx1').attachEvent("onpropertychange",txChange); 
    }else if(navigator.userAgent.indexOf("Firefox")>0){ 
    document.getElementById('tx1').addEventListener("input",txChange2,false); 

    function txChange(){ 
    alert("testie"); 

    function txChange2(){ 
    alert("testfirefox"); 

    </script>本文来自: 脚本之家(http://www.jb51.net/) 详细出处参考:http://www.jb51.net/article/14654.htm本文来自: 脚本之家(http://www.jb51.net/) 详细出处参考:http://www.jb51.net/article/14654.htm
    在近来的工作中,用到了attachEvent方法,该方法可以为某一事件附加其它的处理事件,有时候可能比较有用,这里将其基本用法总结一下。其语法可以查看《DHTML手册》,里面有详细的说明,这里贴一个例子,该例子来自互联网:document.getElementById("btn").onclick = method1; 
    document.getElementById("btn").onclick = method2; 
    document.getElementById("btn").onclick = method3;
    如果这样写,那么将会只有medhot3被执行写成这样:
    var btn1Obj = document.getElementById("btn1"); 
    //object.attachEvent(event,function); 
    btn1Obj.attachEvent("onclick",method1); 
    btn1Obj.attachEvent("onclick",method2); 
    btn1Obj.attachEvent("onclick",method3);
    执行顺序为method3->method2->method1如果是Mozilla系列,并不支持该方法,需要用到addEventListener
    var btn1Obj = document.getElementById("btn1"); 
    //element.addEventListener(type,listener,useCapture); 
    btn1Obj.addEventListener("click",method1,false); 
    btn1Obj.addEventListener("click",method2,false); 
    btn1Obj.addEventListener("click",method3,false);
    执行顺序为method1->method2->method3