【发布时间】:2018-05-24 10:06:48
【问题描述】:
我有这个代码:
<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>
每当input 的value 通过onkeyup 更改时,span 的data-data 就会获得该值(如果它恰好是一个数字)。但是,onpaste 永远不会运行。如果我通过键盘粘贴,那么span的data-data会成功更新,但这只是因为我的onkeyup,也就是说,如果我没有那个属性,即使用键盘粘贴也不会运行.为什么onpaste 在我的情况下不起作用?我已经在 Chrome 和 Firefox 中检查过了。
编辑
原来执行了onpaste,但是value不是粘贴的文本。我认为这里需要一个丑陋的解决方案,涉及setTimeout。
【问题讨论】:
-
我尝试将事件输出到这样的控制台:
<input type="text" id="point-setter-input" onkeyup="console.log('keyup')" onpaste="console.log('onpaste')" 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>,它工作正常。onpaste甚至早于onkeyup...
标签: javascript html paste