在我的表单中,我希望允许用户格式化文本并添加列表等(基本的 html 功能,而不必知道 html)。
以粗体按钮为例:
<div class="goBold button">B</div>
<input type="text" name="txtMessage" />
<script>
$(".goBold").click(function() {
formatText("bold");
});
function formatText(formatType)
{
var input = $("#txtMessage");
var text = input.val();
var ss = input[0].selectionStart;
var se = input[0].selectionEnd;
if (formatType == "bold")
{
if (ss == se)
{
// there's no text in the textbox, so just write in the tags
input.val(text + "[b][/b]");
}
else
{
// surround the highlighted text with the tags
input.val(text.substr(0, ss) + "[b]" + text.substr(ss, se) + "[/b]" + text.substring(se, text.length));
}
}
}
</script>
虽然所有这些都有效,但有一个小问题:
让我们假设这个文本框的文本值为
敏捷的红狐跳过懒惰的棕色狗。这是英语中唯一使用所有 26 个字母的句子
突出显示单词all 26 letters
后,单击粗体按钮会将文本包装在标签中,但它还会添加选择后存在的文本的第二个副本。
我不确定这是为什么,有人可以在这里提供任何见解吗?
蒂亚:)