首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript onpaste replaceAll

Javascript onpaste replaceAll
EN

Stack Overflow用户
提问于 2018-01-09 05:12:15
回答 2查看 1.1K关注 0票数 1

我想粘贴一个textBox,在粘贴之后,它应该用逗号替换所有的空格。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>

<input id="pc" type="text" contenteditable="true" onpaste="myFunction()" size="60" >


<script>
function myFunction() {
 var e=document.getElementById("pc"); 
 setTimeout(function(){alert(e.value);}, 45);
 var x = document.getElementById("pc").value;
 alert(x);
 var s = x.replaceAll(" ",",");
 alert(s);

 document.getElementById("pc").value = s;
}
</script>
</body>
</html>

我的第一个警报打印为空白。第二个警报( alert(x))也是空的。Third alert ( alert(s))打印我试图粘贴的文本。

我希望第三个警告打印替换的文本,并且此值将覆盖文本框中粘贴的值。

EN

回答 2

Stack Overflow用户

发布于 2018-01-09 05:19:02

此答案使用Jquery:

您可以首先绑定到文本输入中的paste事件,然后将paste事件的结果抓取到变量中。然后,要用逗号替换空格,只需要一个非常基本的正则表达式:data.replace(new RegExp(' ', 'g'), ','),它用逗号替换每个空格。

代码语言:javascript
复制
$('#pc').bind('paste', function(e) {
    var data = e.originalEvent.clipboardData.getData('Text');
    data = data.replace(new RegExp(' ', 'g'), ',');
    alert(data);
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<body>

  <input id="pc" type="text" contenteditable="true"size="60">


</body>

</html>

票数 1
EN

Stack Overflow用户

发布于 2018-01-09 05:23:37

第一个警报在不同的作用域中,因此e.value未定义,因为e在其当前作用域中未定义。第二个警报是空的,因为事件是在粘贴时触发的,而不是粘贴后触发的,依此类推,值不会更新,因此在粘贴之前会提供以前的值。第三个粘贴直接修改值,因此使用新值。如果希望其他两个警报正常工作,则可能需要尝试检查Ctrl+V的keyup事件。

代码语言:javascript
复制
<input id="pc">
<script>
window.onload = function() {
    document.getElementById('pc').onkeyup = function(e) {
        this.value = this.value.replace(/ /g,',');
    }
}
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48158122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档