JavaScript進階系列07,滑鼠事件

Darren Ji發表於2014-10-05

滑鼠事件有Keydown, Keyup, Keypress,但Keypress與Keydown和Keyup不同,如果按ctrl, shift, caps lock......等修飾鍵,不會觸發Keypress事件,而會觸發Keydown和Keyup事件,這就是Keypress事件與Keydown、Keyup事件的不同之處。另外,通常使用Keypress事件來獲取使用者輸入資訊。

 

繼續使用"JavaScript進階系列05,事件的執行時機, 使用addEventListener為元素同時註冊多個事件,事件引數"中的跨瀏覽器事件處理機制來觸發滑鼠事件。

 

建立Script2.js只允許輸入大小寫字母,給Keypress事件註冊方法。

(function() {
    var txtbox = document.getElementById("txtInput");
    eventUtility.addEvent(txtbox, "keypress", function(evt) {
        var code = eventUtility.getCharCode(evt);
        //如果是大寫或小寫字母
        if ((code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {
            
        } else {
            eventUtility.preventDefault(evt);
        }
    });
}());

 

頁面部分:

    <input type="text" id="txtInput"/>
    <script src="eventUtility.js"></script>
    <script src="script2.js"></script>

輸出結果:在鍵盤輸入非大小寫字母,input沒任何反應   

 

非修飾鍵對應的ASCII碼:
A-Z:65-90
a-z: 97-122
0-9: 48-57

 

其實,使用Keydown或Keyup事件,也能達到相同的效果。修改Script2.js如下:

(function() {
    var txtbox = document.getElementById("txtInput");
    eventUtility.addEvent(txtbox, "keydown", function(evt) {
        var code = evt.keyCode;
        //如果是大寫或小寫字母
        if ((code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {
            
        } else {
            eventUtility.preventDefault(evt);
        }
    });
}());

與keypress事件不同,keyup和keydown事件通過KeyCode屬性獲取鍵盤按下的非修飾鍵。另外, 通過evt.altkey, evt.ctrlKey, evt.shiftKey獲取按下的alt鍵, ctrl鍵和shift鍵。

 

修改Scrip2.js來判斷是否按下了"ctrl+B"組合鍵。

(function() {
    eventUtility.addEvent(document, "keydown", function(evt) {
        var code = evt.keyCode;
        var ctrlkey = evt.ctrlKey;
        if (ctrlkey && code === 66) {
            alert('按下了ctrl+B組合鍵');
        }
    });
}());

 

“JavaScript進階系列”包括:

JavaScript進階系列01,函式的宣告,函式引數,函式閉包

JavaScript進階系列02,函式作為引數以及在陣列中的應用

JavaScript進階系列03,通過硬編碼、工廠模式、建構函式建立JavaScript物件

JavaScript進階系列04,函式引數個數不確定情況下的解決方案

JavaScript進階系列05,事件的執行時機, 使用addEventListener為元素同時註冊多個事件,事件引數

JavaScript進階系列06,事件委託

JavaScript進階系列07,滑鼠事件

 

相關文章