Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML-onpaste事件删除额外空格_Javascript_Html - Fatal编程技术网

Javascript HTML-onpaste事件删除额外空格

Javascript HTML-onpaste事件删除额外空格,javascript,html,Javascript,Html,我有一个带有额外空格的输入文本字段 12 12 12 我想在将其粘贴到文本字段后删除多余的空格 121212 然而,我的代码似乎不适合我 HTML ​ JavaScript 功能try123(fId){ cleanExtraSpace=函数(e){ e、 预防默认值(); var pastedText=''; //IE浏览器OnPaste事件处理程序 if(window.clipboardData&&window.clipboardData.getData){ pastedText=win

我有一个带有额外空格的输入文本字段

12 12 12
我想在将其粘贴到文本字段后删除多余的空格

121212
然而,我的代码似乎不适合我

HTML

JavaScript

功能try123(fId){
cleanExtraSpace=函数(e){
e、 预防默认值();
var pastedText='';
//IE浏览器OnPaste事件处理程序
if(window.clipboardData&&window.clipboardData.getData){
pastedText=window.clipboardData.getData('Text');
}else if(e.clipboardData&&e.clipboardData.getData){
pastedText=e.clipboardData.getData('text/plain');
}
//删除粘贴时的开始和结束额外空格
this.value=pastedText.replace(/\D/g');
};
fId.onpaste=清除外部空间;
}
请尝试以下操作

输入:

这里有一个活生生的例子:

试试这个

HTML

Javascript

document.getElementById('search').addEventListener('paste', handlePaste);

function handlePaste(e){
    e.preventDefault();
    var clipboardData = e.clipboardData || window.clipboardData;
    var pastedData = clipboardData.getData('Text');
    var searchField = document.getElementById('search');
    searchField.value = pastedData.trim();
}

使用此选项可以删除额外的空格(键盘粘贴和鼠标粘贴)。

谢谢。但是可以从HTML调用函数吗?例如
,因为我有很多文本字段需要应用这个函数。内联JavaScript是一个非常糟糕的做法,现在已经过时了。你做这样的事情会更好:+1这对我也很有用。但是我很好奇(并且已经试着找到了答案)——为什么必须将
el.value.replace
函数包装在
窗口中。setTimeout
?我试着将它简化为
this.value.replace(/\D/g'),但显然这不起作用,否则您会这样写的。为什么需要
设置超时
?来自评论:嗨,请不要只回答源代码。试着提供一个关于你的解决方案如何工作的很好的描述。请参阅:。感谢此解决方案不考虑光标位置或所选文本,而是使用剪贴板中的数据替换整个值。因此,我不建议使用这段代码。
document.getElementById('search').addEventListener('paste', handlePaste);

function handlePaste(e){
    e.preventDefault();
    var clipboardData = e.clipboardData || window.clipboardData;
    var pastedData = clipboardData.getData('Text');
    var searchField = document.getElementById('search');
    searchField.value = pastedData.trim();
}