《Javascript高等程序设计》14章-----过滤输入

1、屏障字符(监听keypress事宜)

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();
    }
}

注重:
1、由于Firefox和Safari(3.1版本之前)会对上下键、左右键、delete键和退格键触发keypress事宜,在Firefox中非字符的charCode的值为0,在Safari(3.1版本之前)charCode的值为8。为了不要屏障那些非字符键,所以有charCode>9的前提;
2、为了不屏障用户输入ctrl+C或许Ctrl+V等组合键,推断用户没有按下Ctrl键,所以有!e.ctrlKey的前提。

2、操纵剪切板

IE、Firefox、Safari都支撑剪切板,但Opera不支撑。
支撑6种事宜(copy、paste、cut、beforeCopy、beforePaste、beforeCut)事宜。在IE中剪切板数据应用window.clipboardData接见,在Firefox和Safari顶用event.clipboardData接见。

猎取和设置剪切板数据

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);
        }
    }
}

注重
1、在IE下测试胜利,但是在chrome下应用setData不胜利!有时间用http://wangningmei.is-programmer.com/posts/36438.html实践一下;
2、getData要领只能在paste事宜中才有用

    原文作者:XIAOYI
    原文地址: https://segmentfault.com/a/1190000002915274
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞