<body>
<input id="test" type="text" />
</body>
<script>
    $("#test").bind("propertychange",function(){  
        alert($("#test").val());
    });  
</script>
ie8下 比如输入“百度”
弹出百度 和 百度百度 2次 
为什么会弹出2次?

解决方案 »

  1.   


    建议别用这个事件, 这是ie专有的事件,其他浏览器都不工作
    下面是个jquery 扩展 TextChanged 支持所有的浏览器
    http://rayaspnet.blogspot.ca/2011/01/how-to-implement-textchanged-event.html
      

  2.   

    试试:$("#test").bind("input",function(){  
            alert($("#test").val());
    }); 
      

  3.   


    建议别用这个事件, 这是ie专有的事件,其他浏览器都不工作
    下面是个jquery 扩展 TextChanged 支持所有的浏览器
    http://rayaspnet.blogspot.ca/2011/01/how-to-implement-textchanged-event.html

    哥们 你发的这个网页打不开啊?
      

  4.   


     $("#test").unbind("propertychange").bind("propertychange",function(){  
            alert($("#test").val());
        });  先解绑事件试试
      

  5.   

    哥们一样的 都是一样的效果 试过了。
    哪你想弹几次,属性只要一变化,它就 alert
      

  6.   

    用keyup吧
        $("#test").bind("keyup",function(){  
            alert($("#test").val());
        });  
      

  7.   

    两个都要写,一个是ie的,一个是标准浏览器的。$("#test").off().on("input propertychange",function(){  
        alert($("#test").val());
    });  
      

  8.   


    建议别用这个事件, 这是ie专有的事件,其他浏览器都不工作
    下面是个jquery 扩展 TextChanged 支持所有的浏览器
    http://rayaspnet.blogspot.ca/2011/01/how-to-implement-textchanged-event.html

    哥们 你发的这个网页打不开啊?
    是吗?
    看代码plugin定义:(function (a) {
        a.event.special.textchange = {
            setup: function () {
                a(this).data("lastValue", this.contentEditable === "true" ? a(this).html() : a(this).val());
                a(this).bind("keyup.textchange", a.event.special.textchange.handler);
                a(this).bind("cut.textchange paste.textchange input.textchange", a.event.special.textchange.delayedHandler)
            },
            teardown: function () {
                a(this).unbind(".textchange")
            },
            handler: function () {
                a.event.special.textchange.triggerIfChanged(a(this))
            },
            delayedHandler: function () {
                var b = a(this);
                setTimeout(function () {
                    a.event.special.textchange.triggerIfChanged(b)
                },
                25)
            },
            triggerIfChanged: function (b) {
                var c = b[0].contentEditable === "true" ? b.html() : b.val();
                if (c !== b.data("lastValue")) {
                    b.trigger("textchange", b.data("lastValue"));
                    b.data("lastValue", c)
                }
            }
        };
        a.event.special.hastext = {
            setup: function () {
                a(this).bind("textchange", a.event.special.hastext.handler)
            },
            teardown: function () {
                a(this).unbind("textchange", a.event.special.hastext.handler)
            },
            handler: function (b, c) {
                c === "" && c !== a(this).val() && a(this).trigger("hastext")
            }
        };
        a.event.special.notext = {
            setup: function () {
                a(this).bind("textchange",
                a.event.special.notext.handler)
            },
            teardown: function () {
                a(this).unbind("textchange", a.event.special.notext.handler)
            },
            handler: function (b, c) {
                a(this).val() === "" && a(this).val() !== c && a(this).trigger("notext")
            }
        }
    })(jQuery);
      用法$("#textboxid").bind('textchange', function (event, previousText) {
     alert(previousText);
        var textboxContent = $("#textboxid").val();
     
        if (textboxContent == "" || textboxContent == "default value") {
     
            $("#buttonid").addClass('disabled').attr('disabled', true);
     
        } else {
     
            $("#buttonid").addClass('disabled').attr('disabled', false);
     
        }
     
    });