【问题标题】:Why is this onpaste event not firing? [duplicate]为什么这个 onpaste 事件没有触发? [复制]
【发布时间】:2016-12-11 00:38:44
【问题描述】:

我正在尝试捕获 input[type="date"] 元素的粘贴事件。在 Chrome 中,您不能复制/粘贴到这种类型的元素中,因此作为一种解决方法,我试图将其包装在带有 onpaste 事件的 DIV 元素中。我遇到的问题是,如果您单击日期输入并按 CTRL+V 没有任何反应。但是,如果您先单击正文中的任何其他位置,然后单击日期输入并按 CTRL+V,则可以使用...

<div onpaste="alert('test')">
    <input type="date">
</div>

演示:

https://jsfiddle.net/4qh31tn0/

编辑: 好的,原来onpaste 事件不必在DIV 上,它可以移动到INPUT 元素,但问题是持续存在。如果我加载 jsfiddle,单击输入并按 CTRL+V,没有任何反应。如果我事先单击INPUT 元素之外的某个位置,然后单击输入并按CTRL+V,它可以工作...

【问题讨论】:

  • 这开始看起来像是 Chrome 中的一个错误,它只影响日期输入。
  • 为什么您不使用 keyup 事件并将日期更改为动态文本并再次更改为日期。
  • 我只想指出,尽管您可能已经知道这一点,onpaste 不是 HTML 规范的一部分。如果您在一个浏览器中使用它,则不太可能在另一种浏览器中使用。

标签: javascript html


【解决方案1】:

虽然此错误(我认为这是一个错误)尚未修复,但您可以使用 onkeydownonkeyuponclickonblur 和其他事件来检测日期输入是否为 changed

【讨论】:

  • 再次查看我的问题。它确实有效,但前提是您在尝试之前至少单击了页面上的其他位置一次。这显然是一个错误。
  • @Chris_F 但这是一个错误的想法。如果您不希望发生错误,请尝试填充 onchange 事件,如答案中所述。
猜你喜欢
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
相关资源
最近更新 更多