《Javascript高級程序設計》14章-----過濾輸入

一、屏蔽字符(監聽keypress事件)html

var username = document.forms["form"].username;
username.onkeypress = function(e){
    var charcode = e.charCode;
    if(!/\d/.test(String.fromCharCode(charcode)) && charcode>9 && !e.ctrlKey){
        e.preventDefault();
    }
}

注意:
一、由於Firefox和Safari(3.1版本以前)會對上下鍵、左右鍵、delete鍵和退格鍵觸發keypress事件,在Firefox中非字符的charCode的值爲0,在Safari(3.1版本以前)charCode的值爲8。爲了避免要屏蔽那些非字符鍵,因此有charCode>9的條件;
二、爲了避免屏蔽用戶輸入ctrl+C或者Ctrl+V等組合鍵,判斷用戶沒有按下Ctrl鍵,因此有!e.ctrlKey的條件。chrome

二、操做剪切板post

IE、Firefox、Safari都支持剪切板,但Opera不支持。
支持6種事件(copy、paste、cut、beforeCopy、beforePaste、beforeCut)事件。在IE中剪切板數據利用window.clipboardData訪問,在Firefox和Safari中用event.clipboardData訪問。測試

獲取和設置剪切板數據code

var EventUtil = {
    getClipboardData: function(e){
        var clipboardData = window.clipboardData || e.clipboardData;
        return clipboardData.getData("text");
    },
    setClipboardData: function(e, value){
        console.log(e.clipboardData);
        if(e.clipboardData){
            return e.clipboardData.setData("text/plain", value);
        }else if(window.clipboardData){
            return window.clipboardData.setData("text", value);
        }
    }
}

注意
一、在IE下測試成功,可是在chrome下利用setData不成功!有時間用http://wangningmei.is-programmer.com/posts/36438.html實踐一下;
二、getData方法只能在paste事件中才有效orm

相關文章
相關標籤/搜索