簡體   English   中英

我想從textarea中選擇特定文本並將其設為粗體,斜體或在reactjs中創建超鏈接

[英]I want to select specific text from textarea and make it bold, italic or make an hyperlink in reactjs

我正在使用textarea進行編輯,並想要對所選文本實施粗體,斜體或超鏈接。 現在,如果我將其設為粗體或斜體,則效果會顯示在整個框中。 我想將其限制為僅保留選定的文本。 我可以從文本區域中獲取選定的文本,我無法使其變為粗體或斜體,或者無法在所選任務上添加鏈接,因為document.execCommand在reactjs中不起作用。

我正在通過getSelectionTxt()函數從textarea獲取選定的文本,但是使用此text_to_hyperlink,它將用錨標記和url替換整個文本。

我希望該鏈接與所選標簽相關聯。 我正在通過按鈕調用此text_to_hyperlink。

text_to_hyperlink=()=> {
  var text_entry = document.getElementById('textArea');
  var text_selected = this.getSelectionTxt();
  var url = document.getElementById("url").value;
  text_entry.value = '<a href="' + url + '">' + text_selected + '</a>' ;
}    
getSelectionTxt =() => {
   var text = "";
   var activeEl = document.activeElement;
   if (activeEl == "textarea") {
       text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);
   } else if (window.getSelection) {
       text = window.getSelection().toString();
   }
   var url = document.getElementById("url").value;
   return text;
}

<textarea
          id="textArea"
          contenteditable="true"
          rows="10"
          value={this.state.value}
          onClick={this.getSelectionTxt}
          onChange={this.handleChange}
 />

您不能使用textarea元素執行此操作:它們僅支持純文本,不支持HTML。 您將必須使用帶有contenteditable="true"的其他元素。 我更喜歡div ,但其他人也可以。

textarea元素無法呈現HTML。 您可以使用與React兼容的WYSIWYG編輯器,例如以下一種:

1)中型編輯器-https: //github.com/yabwe/medium-editor

2)Draft.js- https: //draftjs.org/

或使用帶有contentEditable=true<div>並在其中呈現HTML。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM