3

有人能解释一下吗?

基本上,当您在 Firefox 中并点击选项卡时,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 fiddle 工作示例:​</p>

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

4

1 回答 1

0

Gecko 与 IE(显然是 Webkit)的不同之处在于,change事件是在事件触发后blur触发的。

通过在按键上设置值TAB,您可以有效地防止应用更改,因为触发器是由 on和 onchange检测到的值之间的差异定义的。focusblur

参考

于 2012-11-30T22:38:54.833 回答