input onpaste事件

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方法。如果为了兼容的话就只能用不优雅的地一种方法了。
*/
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值