javascript - 如何在按键时将字符附加到 JavaScript 中文本框/文本区域中的选定文本

标签 javascript jquery html

我有文本框/文本区域输入字段,例如在里面选择一些文本

Test Message with sub text and last message

选择“Mes”并按 ctrl+B 它应该附加 <b> (或我选择的任何字符或多个字符)到 JavaScript 两端的选定文本,如下所示

Test <b>Mes<b>sage with sub text and last message

我能够成功模拟 Ctrl+B 键事件,但无法用新文本替换所选文本。

最佳答案

您可以从文本区域中的相应字段获取选择的开始和结束。

<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) {
	if (e.keyCode == 66 && (e.metaKey || e.ctrlKey)) {
		e.preventDefault();

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

关于javascript - 如何在按键时将字符附加到 JavaScript 中文本框/文本区域中的选定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40615729/

相关文章:

javascript - 复选框 list 属性

jquery - 使用 jQuery Ajax 发送 SOAP 信封的自定义 header

javascript - 将鼠标悬停在另一个对象上时更改显示 CSS

javascript - 如何制作一个带有两个彼此为 "push"的句柄的 jquery ui slider ?

javascript - 使用可重复查找元素数组时 Protractor 测试出现问题

javascript - 使用相同的 URL 在 SPA 中集成 HotJar

javascript - 如何在javascript中用 "fetch"方法替换 "ajax"?

html - 根据选项卡选择显示/隐藏图像

html - 整个页面内容的一个不可滚动的背景图像

Javascript - 选择元素的子元素的第一个元素