1

我所需要的只是能够检测到文本何时被放入 Textarea。然后我获取该文本并对其进行处理并清除文本区域。可能有很多这样的文本区域和非常高的 UI 期望,所以轮询是最后的手段。

对于 IE,“onfocus”可以解决问题,因为在用户将内容放入 textarea 后会触发此事件。

对于 Firefox,我找不到有效的事件。我已经尝试过 onmouseup 和 onchange .. 不知道还有什么可以尝试的。我不想不得不轮询 textarea 的内容。非常感谢帮助。谢谢。

编辑:为澄清起见,“丢弃”意味着用户(通常)从页面中选择文本,但无论在哪里,将其拖放到文本区域中都没有关系。这与 Ctrl+V 或右键单击粘贴(采用两种不同的检测方法,顺便说一句)或(显然)键入文本区域不同。具体来说,它是拖放的“拖放”方面。我真的不知道该怎么形容它。

我觉得这个问题说得比较准确。为了幽默,假设我的意思是你们都选择共享的文本区域上的任何其他操作。如果我的意思是“粘贴”,你不认为我会在我的问题的标题或内容中提到一些关于粘贴的内容吗?输入文本区域也是如此。但是,也许,你们都不够了解我,不知道我输入了我的意思,而不是错误地输入了与我的意思有点相关的东西。

4

4 回答 4

4

对于 Firefox,这对我有用:

window.addEventHandler("dragdrop", function(event) {alert("Drop it like it's hot!")}, true)

但是,在 Safari 中不起作用。没试过IE。

于 2009-01-23T16:51:25.097 回答
0

投票似乎是唯一的出路。

当在浏览器中启动拖放操作时,它似乎取消了正在发生的所有其他事情。您可以通过在页面上放置“onmouseover”事件,然后启动 DnD 操作并拖动它来见证这一点。事件不会触发。

浏览器内部处理“拖放”的方式似乎只是巧合,它会导致在 IE 和 Safari 中为 textarea 触发 onfocus()。我怀疑 W3 规范中有很多定义……没关系,W3 是垃圾,而且没有人完全遵守它。

在我的问题中,我说每次使用后清空 textarea 是很奢侈的,所以我觉得轮询: textarea.value.length>0 几乎没有任何成本,也不应该成为性能问题。

但是,唉,它特别与将内容放入文本区域有关。

Down-mod远离以减轻您的痛苦。

于 2009-01-23T15:32:05.243 回答
-1

你说的“掉”是什么意思?您是在谈论粘贴(^V)操作吗?如果是这样,Aron 的答案确实是正确的,您将获得 keydown/keyup (并且该值将在 keyup 中可读)。

对输入的任何更新都会发生的通用回调是“onchange”——你可以试试。请注意,在键入时,直到您完成并取消输入焦点后才会调用它,因此如果您需要即时更新键入和其他形式的输入,您仍然需要'onkeyup'。

编辑重新澄清:当拖放导致将内容添加到文本区域时,应触发 IMO 'onchange';我认为它不是浏览器错误(至少在 Firefox 中)。在这种情况下,我只能同意轮询就是你所剩下的。

于 2009-01-23T12:07:46.323 回答
-1

如果您希望您的 textarea 对被删除、粘贴或键入的文本做出反应,您唯一的解决方案就是一个按钮。即使是轮询内容的计时器也无济于事。

您提到您希望用户能够在文本区域中键入文本。你提到你想在事件触发时清除文本。浏览器不可能知道用户已经完成输入。您必须依赖特定的操作。

现在对于拖放或粘贴,您可以依靠 mouseup 和 keyup 事件来检测它。

于 2009-01-23T15:43:19.260 回答