Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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 Onpaste仅由键盘粘贴触发_Javascript_Html_Paste - Fatal编程技术网

Javascript Onpaste仅由键盘粘贴触发

Javascript Onpaste仅由键盘粘贴触发,javascript,html,paste,Javascript,Html,Paste,我有以下代码: <input type="text" id="point-setter-input" onkeyup="if (!isNaN(this.value)) {document.getElementById('point-setter-span').setAttribute('data-data', 'data=' + this.value)};" onpaste="if (!isNaN(this.value)) {document.getElementById('point-s

我有以下代码:

<input type="text" id="point-setter-input" onkeyup="if (!isNaN(this.value)) {document.getElementById('point-setter-span').setAttribute('data-data', 'data=' + this.value)};" onpaste="if (!isNaN(this.value)) {document.getElementById('point-setter-span').setAttribute('data-data', 'data=' + this.value)};" value="0">
<span class="api command initialized" data-command-name="SetPoints" data-events="click" data-container="#popup-content" id="point-setter-span" data-data="data=3">Pontok Mentése</span>

蓬托克门泰酒店
每当
输入的
值通过
onkeyup
更改时,
span
数据数据
如果恰好是一个数字,就会得到该值。但是,
onpaste
将永远不会运行。如果我通过键盘粘贴,则
span
数据数据
将成功更新,但这仅是因为我的
onkeyup
,也就是说,如果我没有该属性,即使使用键盘粘贴也不会运行。为什么在我的情况下,
onpaste
不起作用?我已经在Chrome和Firefox中检查过了

编辑


结果是执行了onpaste,但值不是粘贴的文本。我认为这里需要一个丑陋的解决方案,包括在设置
的值之前触发粘贴事件,否则无法阻止其默认行为(即设置
的值)

因此,当您选中
if(!isNaN(this.value))
时,仍然没有设置粘贴事件中包含的新值

要解决这个问题,只需收听事件,它在任何情况下都会被触发

var-inp=document.getElementById('inp');
inp.onpaste=函数(){
console.log('paste',this.value);
};
inp.oninput=函数(){
console.log('input',this.value);
}

我已使用
设置超时解决了此问题,因此在使用时更改了该值:

<input type="text" id="point-setter-input" onkeyup="setTimeout(() => {if (!isNaN(this.value.trim())) {document.getElementById('point-setter-span').setAttribute('data-data', 'data=' + this.value)};}, 4);" onpaste="setTimeout(() => {if (!isNaN(this.value.trim())) {document.getElementById('point-setter-span').setAttribute('data-data', 'data=' + this.value)};}, 4);" value="0">

我尝试将事件输出到这样的控制台:
Pontok menteése
,它工作正常。
onpaste
甚至在
onkeyup
之前就可以工作了。。。