FireFox与Webkit / IE的onchange行为不同

时间:2012-11-27 23:48:05

标签: javascript firefox

有人能够解释这个吗?

基本上当你在firefox中,并且你点击tab时,onchange中的“console.log”会被调用,但不会在Chrome / Safari(webkit)或IE中被调用。

function initLookup(id) {
    var lookupElement = document.getElementById(id);
    var lookup = new Lookup(lookupElement);            
    lookupElement.lookup = lookup;
}

function Lookup(lookupElement) {
    this.doKeyDown = doKeyDown;
    this.setLookup = setLookup;        
    this.inputElement = lookupElement;
    this.inputElement.onkeydown = this.doKeyDown;
    var self = this;

    function setLookup() {
        self.inputElement.value = 'asdf';
    }
    function doKeyDown(event) {
        if(event.keyCode == 9) {
            setLookup();
        }            
    }
}
initLookup("one");

一个JS小提琴工作示例:

http://jsfiddle.net/pj9Gf/5/

1 个答案:

答案 0 :(得分:0)

Gecko与IE(显然是Webkit)不同,因为change事件在blur事件被触发后被触发。

通过设置 TAB 键上的值,您可以有效地阻止应用更改,因为change触发器是由focus触发器上检测到的值之间的差异定义的{1}}和blur

参考