2016-11-15 34 views
1

我有文本框/ textarea輸入字段,通過選擇內部的一些文本如何將字符添加到JavaScript中的文本框/ textarea中的選定文本按鍵

上選擇「的Mes」並按下CTRL + B應該追加<b>(或任何字符或我所選擇的多個字符)到所選的文本子文本和最後一個消息

測試消息在以JavaScript兩端如下所示

測試<b>Mes<b>鼠尾草與子文本和最後一個消息

我能夠模擬Ctrl + B關鍵事件成功但無法用新文本替換選定的文本,請幫助。

回答

1

你可以選擇開始和在textarea的相應字段結束。

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
 
<textarea>Test Message with sub text and last message</textarea> 
 
<script> 
 
jQuery('textarea').on('keydown', function(e) { 
 
\t if (e.keyCode == 66 && (e.metaKey || e.ctrlKey)) { 
 
\t \t e.preventDefault(); 
 

 
\t \t var text = jQuery(this).val(); 
 
\t \t var start = this.selectionStart; 
 
\t \t var end = this.selectionEnd; 
 
\t \t var selection = '<b>' + text.substring(start, end) + '</b>'; 
 
\t \t text = text.substring(0, start) + selection + text.substring(end); 
 
\t \t jQuery(this).val(text); 
 
\t \t this.selectionStart = start; 
 
\t \t this.selectionEnd = start + selection.length; 
 
\t } 
 
}); 
 
</script>

+0

非常感謝你的快速反應 – Kiran

1

以下函數將選定的文本包裝在具有給定字符串的文本區域中。

我寫的情況爲例

function wrapSelection(textArea, wrappingString) { 
    var s = textArea.selectionStart; 
    var e = textArea.selectionEnd; 
    var oldValue = textArea.value; 
    var newValue = oldValue.slice(0, s) + wrappingString + oldValue.slice(s, e) + wrappingString + oldValue.slice(e, oldValue.length); 
    textArea.value = newValue; 
} 

var element = document.getElementById('your-input-element'); 
element.onselect = function() { 
    wrapSelection(element, '<b>'); 
} 
+0

非常感謝你的快速反應 – Kiran

相關問題