《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

相关文章
相关标签/搜索