我想粘贴一个textBox,在粘贴之后,它应该用逗号替换所有的空格。
<!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))打印我试图粘贴的文本。
我希望第三个警告打印替换的文本,并且此值将覆盖文本框中粘贴的值。
发布于 2018-01-09 05:19:02
此答案使用Jquery:
您可以首先绑定到文本输入中的paste事件,然后将paste事件的结果抓取到变量中。然后,要用逗号替换空格,只需要一个非常基本的正则表达式:data.replace(new RegExp(' ', 'g'), ','),它用逗号替换每个空格。
$('#pc').bind('paste', function(e) {
var data = e.originalEvent.clipboardData.getData('Text');
data = data.replace(new RegExp(' ', 'g'), ',');
alert(data);
});<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>
发布于 2018-01-09 05:23:37
第一个警报在不同的作用域中,因此e.value未定义,因为e在其当前作用域中未定义。第二个警报是空的,因为事件是在粘贴时触发的,而不是粘贴后触发的,依此类推,值不会更新,因此在粘贴之前会提供以前的值。第三个粘贴直接修改值,因此使用新值。如果希望其他两个警报正常工作,则可能需要尝试检查Ctrl+V的keyup事件。
<input id="pc">
<script>
window.onload = function() {
document.getElementById('pc').onkeyup = function(e) {
this.value = this.value.replace(/ /g,',');
}
}
</script>https://stackoverflow.com/questions/48158122
复制相似问题