juqery bind问题 困扰了我5个小时了 在线求解
<body>
<input id="test" type="text" />
</body>
<script>
$("#test").bind("propertychange",function(){
alert($("#test").val());
});
</script>
ie8下 比如输入“百度”
弹出百度 和 百度百度 2次
为什么会弹出2次?
[解决办法]
用keyup吧
$("#test").bind("keyup",function(){
alert($("#test").val());
});
[解决办法]
是吗?
看代码
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);
?
????}
?
});