当前位置: 代码迷 >> 综合 >> input onpaste事件
  详细解决方案

input onpaste事件

热度:12   发布时间:2024-01-21 13:52:59.0
function afterPaste() {var clipData = clipboardData;var text = clipData.getData('text'); //剪贴板数据 var reg = /\s/g;var ntxt = text.replace(reg, "");var that = this;//this.value = ntxt; 这种方式不行 必须setTimeout() setTimeout(function() {document.querySelector("#temp").value = ntxt},1);
}function beforePaste() {var clipData = clipboardData;var text = clipData.getData('text'); //剪贴板数据     var reg = /\s/g;var ntxt = text.replace(reg, "");clipData.setData("text", ntxt);
}

   
/*

页面中input是不能粘贴进去换行符的的例如(ff,chrome会自动替换换行符,所以如果是chrome或者ff的话就不需要此方法了)


####

123123123
撒的发生的发斯蒂芬
阿萨德发斯蒂芬

###

粘贴到input时只能留下123123123。

 

 解决的办法有两种

1.将input换成textarea,缺点textarea不能提交到后台(原生)

 

2.自己写js将clipboardData中的数据处理后在赋给input。这里有两个方法可以处理

   2.1 onpaste (可以叫onafterpaste) 如果在这里边处理的话要用setTimeout(),不太优雅。

   2.2 onbeforepaste  这里边可以将剪贴板的值处理后再放回剪贴板,然后粘贴到input时就是正确的数据了(推荐),

 

   既然有第二种方法了为什么还要第一种方法呢,这是因为onbeforepaste方法只有ie浏览器支持,chrome,ff只有onpaste方法。如果为了兼容的话就只能用不优雅的地一种方法了。
*/
 

 

  相关解决方案