2007年11月5日 星期一

[Javascript] Key Event 之蔓延的處理方式

有時偵測到 Key 時, 不想讓 Key 繼續蔓延下去使用, 即可考慮這個方式處理

function preventDefault(ev) {
    if (ev.preventDefault){
        ev.preventDefault();
    }else if (ev.cancelBubble){
        ev.cancelBubble = true;
    }else{
        ev.returnValue = false;
    }
}

document.onkeydown=keyAtPost;
function keyAtPost(e){
    var evt = window.event || e ;
    var evt_key = evt.which != null ? evt.which : evt.keyCode ;
    var GetDefine = 0 ;
    if ( evt_key > 47 && evt_key < 58 ){    // 以數字鍵為例
        switch( state_control ){
            ...
            case STATE_INIT:
                state_control = STATE_GO;
                ...
                GetDefine = 1;
                break;
            ...
        }
    }
    if( GetDefine ) {
        preventDefault(evt);
    }

}

當 match 到一個自訂的狀態時,不想讓此鑑盤事件繼續蔓延到其他地方,好比如現在正在 textarea 時  把數字鍵當成特殊鍵使用,並且不想在 textarea 顯示數字時  可採用這種方式處理

--
    在此感謝 Vexed 學長的教導 :D


沒有留言:

張貼留言