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フィドルの実例:</ p>

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

4

1 に答える 1

0

changeGeckoは、イベントが発生した後にイベントが発生するという点で、IE(および明らかにWebkit)とは異なりblurます。

TABキーを押したときに値を設定することで、変更が適用されるのを効果的に防ぐことができます。これは、で検出された値とでchange検出された値の差によってトリガーが定義されるためです。focusblur

参照

于 2012-11-30T22:38:54.833 に答える