Jquery 向文本框值添加格式标记
在我的表单中,我希望允许用户格式化文本和添加列表等(基本的html功能,而无需了解html) 以粗体按钮为例:Jquery 向文本框值添加格式标记,jquery,Jquery,在我的表单中,我希望允许用户格式化文本和添加列表等(基本的html功能,而无需了解html) 以粗体按钮为例: <div class="goBold button">B</div> <input type="text" name="txtMessage" /> <script> $(".goBold").click(function() { formatText("bold"); }); function formatText(forma
<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>
B
$(“.goBold”)。单击(函数(){
格式文本(“粗体”);
});
函数formatText(formatType)
{
var输入=$(“#txtMessage”);
var text=input.val();
var ss=输入[0]。选择开始;
var se=输入[0]。选择结束;
如果(formatType==“粗体”)
{
if(ss==se)
{
//文本框中没有文本,所以只需在标记中写入即可
input.val(文本+“[b][/b]”);
}
其他的
{
//用标记环绕突出显示的文本
input.val(text.substr(0,ss)+“[b]”+text.substr(ss,se)+“[/b]”+text.substring(se,text.length));
}
}
}
虽然所有这些都有效,但有一个小问题:
假设此文本框的文本值为
敏捷的红狐跳过懒惰的棕色狗。这是英语中唯一使用全部26个字母的句子
突出显示单词所有26个字母
,单击粗体按钮会将文本包装在标记中,但也会添加选择后存在的文本的第二个副本
我不知道这是为什么,有人能提供一些见解吗
TIA:)您应该在任何地方使用
子字符串:
input.val(text.substring(0, ss) +
"[b]" + text.substring(ss, se) + "[/b]" +
text.substring(se, text.length));
(顺便说一句,您的选择器应该是$(“input[name=txtMessage]”)
-它没有id)。substr使用两个参数-start和length。使用第二个参数作为结束位置,而不是长度
text.substr(0, ss) + "[b]" + text.substr(ss, se-ss) + "[/b]" + text.substring(se)
上述代码将正确定位[b]标签
或者,substring(而不是substr)采用start和end参数,而不是start和length这是选择器上的一个好注意,但这只是我在编写代码时的一个输入错误哈哈,我会很好地解决这个问题的,谢谢:)只是,我想我需要更改默认值(无选择)这样,它就可以在文本框中用户当前位置的任何位置插入标签(闪烁的管道,lol,不知道它叫什么),尽管我不知道该怎么做,但事实证明这比预期的要容易:)耶