自动检测 textarea 字段中的链接

Autodetect links in textarea field

如何突出显示文本区域中的 hyperlinks。 我创建了一个标签,如下所示

     <textarea
        class="textarea"
        name="input_note"
        id=""
        cols="30"
        rows="10"
      ></textarea>

假设此输入字段用于做笔记并保存在那里(更像是 google 保留)。因此,当用户在输入字段中输入任何 'links' 时,link 将显示为纯文本而不是 hyperlink。 link 也没有像往常一样突出显示。

---输入字段我用 link- 'https://whosebug.com/' 保存了一个注释 但是当显示注释时

> https://whosebug.com/

纯文本显示,不可点击。

此代码应该有效。我不得不用 div 替换 textarea,因为它不可能在 textarea 中做你想做的事,但我给了它样式,让它看起来就像一个 textarea。

function linkify(inputText) {
  var replacedText, replacePattern1, replacePattern2, replacePattern3;
  if (inputText.indexOf("<a ")) {
    //URLs starting with http://, https://, or ftp://
    replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
    replacedText = inputText.replace(replacePattern1, '<div contentEditable="false" style="display: inline-block; padding: 5px;"><a href="" target="_blank"></a></div>');

    //URLs starting with "www." (without // before it, or it'd re-link the ones done above).
    replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim;
    replacedText = replacedText.replace(replacePattern2, '<div contentEditable="false" style="display: inline-block; padding: 5px;"><a href="http://" target="_blank"></a></div>');

    //Change email addresses to mailto:: links.
    replacePattern3 = /(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim;
    replacedText = replacedText.replace(replacePattern3, '<div contentEditable="false" style="display: inline-block; padding: 5px;"><a href="mailto:"></a></div>');
  } else {
    replacedText = inputText;
  }
  alert(replacedText)
  return replacedText;
}
.textarea {
  border: 1px solid gray;
  min-height: 50px;
  /* if you want Flexible textarea/div then give min-height instead of height */
  overflow: auto;
  padding: 2px;
  resize: both;
  width: 400px;
  font-size: 15px;
  color: #000;
}
<div class="textarea" name="input_note" id="textarea" cols="30" rows="10" contenteditable onblur="  var text = document.getElementById('textarea').innerHTML;var text = linkify(text);document.getElementById('textarea').innerHTML = text;"></div>
Whosebug 已阻止