晕倒
写错了
onpropertychange才对

解决方案 »

  1.   

    是 onpropertychange 吧?
    参考:http://community.csdn.net/Expert/topic/5524/5524226.xml?temp=.718075
      

  2.   

    watch还没见过
    看看先baidu上还看到用oninput的
    也没用过也看看
      

  3.   

    http://www.pigcode.com/dispbbs.asp?boardid=6&id=212可以作为参考
      

  4.   

    应该是这样
    <input type='text' id='_T' name='_T' onkeyup="this.value=this.value">
    <script>
    var t = document.getElementById('_T');
    t.watch("value", function(eventObj, oldval, newval) {alert('changed!');return newval;});
    </script>为什么需要onkeyup="this.value=this.value"呢
      

  5.   

    Watches for assignment to a property named prop in this object, calling handler(prop, oldval, newval) whenever prop is set and storing the return value in that property. A watchpoint can filter (or nullify) the value assignment, by returning a modified newval (or oldval).
    If you delete a property for which a watchpoint has been set, that watchpoint does not disappear. If you later recreate the property, the watchpoint is still in effect. 这个原来是用来做什么的呢
      

  6.   

    <div id="dd"> </div>
    <input type='text' id='_T' name='_T' onkeyup="this.value=this.value">
    <script>
    var t = document.getElementById('_T');
    t.watch("value", function(eventObj, oldval, newval) {dd.innerHTML+=1;return newval;});
    </script>watch的方法还是不好啊
    试试在文本框内按上下左右
    值没有变但还是会触发
    这样跟keyup有什么区别
      

  7.   

    昂。。你模拟一个吧。。
    用focus和blur 加 setInterval
      

  8.   

    watch往里拽字或者用鼠标操作也捕获不到。。
    模拟的话还能支持OP
      

  9.   

    意思是focus的时候setInterval
    blur时清除它?
    这样总归不太好本来已经用了一个setTimeout来设置延迟了
    主要是我需要即时的效果所以不用focus和blur
    一开始我是用keyup的问题是用输入法时判断不了onreadystatechange是最符合我想要的效果但ff又没有类似的效果
      

  10.   

    输入法怎么了?
    即使你用keyup也判断不了拖拽。
    你用setInterval和获得焦点,你把时间设置快点。比如说10延迟很低了已经。
      

  11.   

    <script type="text/javascript">
    (function () {
    //键盘控制
    var data = {};
    document.onkeydown = function () {
    var e = window.event || arguments[0], k = e.keyCode || e.which;
    if (!data[k]) {
    data[k] = k;
    document.body.innerHTML += k + ":按下了<br \/>";
    }
    }; document.onkeyup = function () {
    var i, e = window.event || arguments[0], k = e.keyCode || e.which;
    delete data[k];
    document.body.innerHTML += k + ":离开了<br \/>";
    };
    })();
    </script>
      

  12.   

    我说的输入法问题是
    例如在一个文本框
    用keyup我可以判断按了什么键
    是会修改内容的键就执行一次程序
    但如果是输入法就判断不了
    因为在输入法时根本判断不了内容什么时候会变
      

  13.   

    晕倒,那个只是一个键盘变化的捕获,给你写了个你要的效果。。测试无问题。FF和OP下拖拽进入时候不会触发focus和blur。。不过当触发了会检索到变化
    <script type="text/javascript">
    var Class = {
    //创建类
    create: function () {
    return function () {
    this.initialize.apply(this, arguments);
    };
    }
    };var $A = function (a) {
    //转换数组
    return a ? Array.apply(null, a) : new Array;
    };var $ = function (id) {
    //获取对象
    return document.getElementById(id);
    };Object.extend = function (a, b) {
    //追加方法
    for (var i in b) a[i] = b[i];
    return a;
    };Object.extend(Object, { addEvent : function (a, b, c, d) {
    //添加函数
    if (a.attachEvent) a.attachEvent(b[0], c);
    else a.addEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false);
    return c;
    },

    delEvent : function (a, b, c, d) {
    if (a.detachEvent) a.detachEvent(b[0], c);
    else a.removeEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false);
    return c;
    },

    reEvent : function () {
    //获取Event
    return window.event ? window.event : (function (o) {
    do {
    o = o.caller;
    } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
    return o.arguments[0];
    })(this.reEvent);
    }

    });Function.prototype.bind = function () {
    //绑定事件
    var wc = this, a = $A(arguments), o = a.shift();
    return function () {
    wc.apply(o, a.concat($A(arguments)));
    };
    };var change = Class.create();change.prototype = { time : 10, timer : 0, //记时器和时间值static类型^o^

    initialize : function (input) {
    var wc = this;
    wc.input = input; //对象
    wc.value = input.value; //原始值记录
    wc.sFunc = Object.addEvent(input, ["onfocus"], wc.top.bind(wc));
    wc.eFunc = Object.addEvent(input, ["onblur"], wc.end.bind(wc));
    },

    check : function () {
    //检索变化
    var wc = this, input = wc.input, temp;
    if (wc.value != input.value) { //如果和原始值不等
    temp = [wc.value, input.value].sort(function (a, b) { //排序原始值和新值,得到最长的串
    a = a.length, b = b.length;
    return a >= b ? -1 : 1;
    });
    wc.value = input.value; //覆盖原始值
    document.title = input.id + ":" + temp[0].replace(temp[1], ""); //利用长串替换短串得到变化值
    }
    },

    top : function () {
    //开始检索
    var wc = this;
    wc.timer = window.setInterval(function () {
    wc.check();
    }, wc.time);
    },

    end : function () {
    var wc = this;
    window.clearInterval(wc.timer);
    wc.timer = 0;
    wc.check(); //当离开的时候要检索最后一变
    }

    };window.onload = function () {
    new change($("wc1"));
    new change($("wc2"));
    };
    </script>
    <input id="wc1" />
    <input id="wc2" />