选定文本上的JavaScript粘贴事件

时间:2018-04-23 09:37:04

标签: javascript jquery html paste

问题:

我想通过粘贴格式化传入的文本,但我采取的方法只允许替换现有文本或添加到文本,因此选定的文本是

那么如何在粘贴事件上获取选定的文本。

我不关心跨浏览器支持。

它应该如何:

  • textarea内的文字:aa 1 2 56 99 < -selected text
  • 剪贴板中的文字:56abccda6
  • 文字输出:aa 15 6a bc cda6

的JavaScript / jquery的

$(document).ready(function(){
    function isHex(h) {
        let a = parseInt(h,16);
        return (a.toString(16) ===h.toLowerCase())
    }
    function formatText(text) {
        if(isHex(text)){
            let splitedText = text.match(/[\s\S]{1,2}/g) || [];
            splitedText = splitedText.join(' ');
            return splitedText;
        }
        return text;
    }
    $('textarea[name=plainText]').on('paste', function(event) {
        let formatedText = formatText(event.originalEvent.clipboardData.getData('text'));
        $(this).val($(this).val() + formatedText);
        //or
        //  $(this).val(formatedText);
        return false;
      });
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea placeholder="Message" name="plainText" id="plainText" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Message'"></textarea>

1 个答案:

答案 0 :(得分:0)

http://code.google.com/p/rangyinputs

$(document).ready(function(){
        $('textarea[name=plainText]').on('paste', function(event) {
            let formatedText = 
        formatText(event.originalEvent.clipboardData.getData('text'));
        $("#plainText").replaceSelectedText(formatedText);
            return false;
        })
});