14.2.2过滤输入
1、屏蔽字符
兼容版:
var textbox = document.forms[0].elements[0]; EventUtil.addHandler(textbox,'keypress',fn); function fn(event){ event = EventUtil.getEvent(event); var charCode = EventUtil.getCharCode(event); /* charCode 获取按键的编码 String.fromCharCode( charCode )转换为相应的字符 charCode>9 判断按键为非字符按键 firefox中非字符按键编码为 0 safari3以前中飞字符按键编码为 8 为了让代码更通用,只要屏蔽那些字符编码小于10的键即可 event.ctrlKey 事件表示ctrl是否被按住并没有松开,返回true */ if (!/\d/.test(String.fromCharCode(charCode)) && charCode > 9 && !event.ctrlKey) { //屏蔽默认事件 EventUtil.preventDefault(event); } }
2、操作剪切板
IE是第一个支持与剪切板相关的事件,
beforecopy: 在发生复制操作前触发。
copy: 在发生复制操作时触发。
beforecut:在发生剪切操作前触发。
cut:在发生剪切操作时触发。
beforepaste:在发生粘贴操作前触发。
paste:在发生粘贴操作时触发。
IE浏览器只有在文本中选定字符时,copy和cut事件才会发生。且在非文本框中(如div元素)只能发生copy事件
firfox浏览器只有焦点在文本框中才会发生paste事件
这边文章分析的很详细
https://www.cnblogs.com/xiaohuochai/p/5882902.html
var textbox = document.forms[0].elements[0]; EventUtil.addHandler(textbox,'copy',function(event){ event = EventUtil.getEvent( event ); var clipboardData = event.clipboardData || window.clipboardData; /* 如果在剪切和复制时触发事件 单独使用clipboardData.getData('text');//IE返回null firefox和Chrome返回空 只能配合clipboardData.setData('text','content'); 然后再用clipboardData.getData('text');//可以返回正常的对象数据 */ //clipboardData.setData('text','abc'); //this.value = clipboardData.getData('text'); alert( clipboardData.getData('text') ); });
获取剪切板兼容版:
getClipboardText: function(event){//兼容获取文本 var clipboardData = (event.clipboardData || window.clipboardData); return clipboardData.getData('text'); }, setClipboardText: function(event,value){//兼容修改文本 if (event.clipboardData) { return event.clipboardData.setData('text/plain',value); }else if (window.clipboardData) { return window.clipboardData.setData('text',value); } }