有没有办法拦截JavaScript中的粘贴事件并获取原始值,对其进行更改并将关联的DOM元素的值设置为修改后的值?

例如,我有一个用户试图复制并粘贴带空格的字符串,并且字符串的长度超过了我的文本框的最大长度。我想截取文本,删除空格,然后使用更改值设置文本框的值。

这可能吗?

最佳答案

您可以通过附加“onpaste”处理程序来拦截粘贴事件,并通过在IE中使用“window.clipboardData.getData('Text')”或在其他浏览器中使用“event.clipboardData.getData('text/plain')”来获取粘贴的文本。

例如:

var myElement = document.getElementById('pasteElement');
myElement.onpaste = function(e) {
  var pastedText = undefined;
  if (window.clipboardData && window.clipboardData.getData) { // IE
    pastedText = window.clipboardData.getData('Text');
  } else if (e.clipboardData && e.clipboardData.getData) {
    pastedText = e.clipboardData.getData('text/plain');
  }
  alert(pastedText); // Process and handle text...
  return false; // Prevent the default handler from running.
};

如@pimvdb所述,如果使用jQuery,则需要使用“e.originalEvent.clipboardData”。

关于javascript - Javascript中的拦截粘贴事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6035071/

10-09 05:02