javascript怎么捕获文本框的粘贴事件 本帖最后由 sysdzw 于 2011-08-27 17:05:56 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title></head><script language="javascript">function test(){ var val=document.form1.t1.value; if( document.form1.t1.value.length=16){ document.form1.t1.value=val.substring(0,4); document.form1.t2.value=val.substring(4,8); document.form1.t3.value=val.substring(8,12); document.form1.t4.value=val.substring(12,16); } }</script><body><form id="form1" name="form1" method="post" action=""> <label> <input name="t1" type="text" id="t1" onchange="test();"/> </label> <label> <input name="t2" type="text" id="t2" /> </label> <label> <input name="t3" type="text" id="t3" /> </label> <label> <input name="t4" type="text" id="t4" /> </label></form>123456789abcdefgh</body></html> 在ie7个firefox6中试了下粘贴到第一个文本框都没有效果,但是如果按下回车的话就会分割到4个框中。 试试onpropertychange,input 在IE下响应onpaste 通用做法,监听onkeydown事件。粘帖就是ctrl+v,判断是否这两个键同时按下,如果是,就判断第一个输入框是否16个字符,如果是,则把第一个框的字符切割成4段,然后分别填入对应的4个文本框。 你可以onkeyup监视!keyup->数据进入->事件触发->$(this).value();不知道程序的执行顺序会不会这样执行,你可以测试一下! 感觉keydown监视的有点早!可能会接收不到数据! 第一个script中是一个简单的事件封装,你可以使用任意喜欢的。下面的代码在ie8中测试过,没有考虑chrome下和firefox下获取剪贴板只是给出一个思路<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title></head><body><div id="container"><input id="text1" type="text" /><input id="text2" type="text" /><input id="text3" type="text" /><input id="text4" type="text" /></div> <script type="text/javascript"> //<![CDATA[ var EventUtility = { addHandler: function (element, eventName, handler) { if (typeof element.addEventListener === "function") element.addEventListener(eventName, handler, false); else if (typeof element.attachEvent === "object") element.attachEvent("on" + eventName, handler); else element["on" + eventName] = handler; }, removeHandler: function (element, eventName, handler) { if (typeof element.addEventListener === "function") element.removeEventListener(eventName, handler, false); else if (typeof element.attachEvent === "object") element.detachEvent("on" + eventName, handler); else element["on" + eventName] = null; } }; //]]> </script> <script type="text/javascript"> EventUtility.addHandler(document.getElementById("container"), "paste", function (event) { var target = event.target || event.srcElement; if (target.id === "text1") { if (window.clipboardData.getData) { var text = window.clipboardData.getData('Text'); if (text.length === 16) { if (event.preventDefault) event.preventDefault(); else event.returnValue = false; document.getElementById("text1").value = text.substring(0, 4); document.getElementById("text2").value = text.substring(4, 8); document.getElementById("text3").value = text.substring(9, 13); document.getElementById("text4").value = text.substring(13, 16); } } } }); </script></body></html> 求教,如何获取最后点击标签的ID 急用,alert回调方法 关于 jsp 导出Excel (迅雷下载问题) document.getElementById()的参数必须是常量吗?那我要动态传这个参数怎么办? document.cookie不支持中文? 有关上传文件用js验证的问题 ■■■ javascript的光标问题 ■■■ 请问哪有日期选择的javascript程序 怎么判断是一个对象 如何点击button按钮,激活gridpanel,使其数据显示出来 javascript:showDialog() 事件方法使用问题.... 求一个正则表达式的写法
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<script language="javascript">
function test(){
var val=document.form1.t1.value;
if( document.form1.t1.value.length=16){
document.form1.t1.value=val.substring(0,4);
document.form1.t2.value=val.substring(4,8);
document.form1.t3.value=val.substring(8,12);
document.form1.t4.value=val.substring(12,16);
}
}
</script>
<body>
<form id="form1" name="form1" method="post" action="">
<label>
<input name="t1" type="text" id="t1" onchange="test();"/>
</label>
<label>
<input name="t2" type="text" id="t2" />
</label>
<label>
<input name="t3" type="text" id="t3" />
</label>
<label>
<input name="t4" type="text" id="t4" />
</label>
</form>123456789abcdefgh
</body>
</html>
keyup->数据进入->事件触发->$(this).value();
不知道程序的执行顺序会不会这样执行,你可以测试一下!
下面的代码在ie8中测试过,没有考虑chrome下和firefox下获取剪贴板
只是给出一个思路<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div id="container">
<input id="text1" type="text" />
<input id="text2" type="text" />
<input id="text3" type="text" />
<input id="text4" type="text" />
</div>
<script type="text/javascript">
//<![CDATA[ var EventUtility = { addHandler: function (element, eventName, handler) {
if (typeof element.addEventListener === "function")
element.addEventListener(eventName, handler, false);
else if (typeof element.attachEvent === "object")
element.attachEvent("on" + eventName, handler);
else
element["on" + eventName] = handler;
},
removeHandler: function (element, eventName, handler) {
if (typeof element.addEventListener === "function")
element.removeEventListener(eventName, handler, false);
else if (typeof element.attachEvent === "object")
element.detachEvent("on" + eventName, handler);
else
element["on" + eventName] = null;
}
}; //]]>
</script> <script type="text/javascript"> EventUtility.addHandler(document.getElementById("container"), "paste", function (event) {
var target = event.target || event.srcElement;
if (target.id === "text1") {
if (window.clipboardData.getData) {
var text = window.clipboardData.getData('Text');
if (text.length === 16) {
if (event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
document.getElementById("text1").value = text.substring(0, 4);
document.getElementById("text2").value = text.substring(4, 8);
document.getElementById("text3").value = text.substring(9, 13);
document.getElementById("text4").value = text.substring(13, 16);
}
}
}
});
</script>
</body>
</html>