以下是代码:
function bold() {
var text = document.getElementById("post-body");
var t = text.value.substr(text.selectionStart, text.selectionEnd - text.selectionStart);
var text = '**';
$('#post-body').val(function(_, val) {
return val + text + t + text;
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="post-body" id="post-body" rows="20" style="margin-left: 0px; margin-right: 0px; width: 400px;"></textarea>
<div>
<button id="bold" value="**" onclick="bold()">B</button>
</div>
我想要做的是类似于Stack Overflow的评论工作方式:在文本框中突出显示文本,然后单击按钮。然后该按钮会附加并为文本添加正确的语法。我可以应用正确的语法,但突出显示的文本是重复的。
我知道这是因为在我的代码中,我有
return val + text + t + text;
其中val
是textarea中的所有文字,t
是突出显示的文字,但我不确定如何从val
中删除突出显示的文字并添加t
。
非常感谢任何帮助。
答案 0 :(得分:0)
您可以在之前和之后记录文本,然后返回之前的文本,选择和之后的文本。
function bold() {
var text = document.getElementById("post-body");
var t = text.value.substr(text.selectionStart, text.selectionEnd - text.selectionStart);
var before = text.value.slice(0, text.selectionStart);
var after = text.value.slice(text.selectionEnd);
var text = '**';
$('#post-body').val(function(_, val) {
return before + text + t + text + after;
});
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="post-body" id="post-body" rows="20" style="margin-left: 0px; margin-right: 0px; width: 400px;">Select some text here.</textarea>
<div>
<button id="bold" value="**" onclick="bold()">B</button>
</div>
&#13;