我正在努力允许在我的网站上格式化邮件。基本上,我的Bold,Italic,Underline等按钮会将[b] [/ b],[i] [/ i],[u] [/ u]等标签附加到我文本框中的文本上。< / p>
我甚至没有看过格式化突出显示的文本,因为我不知道如何检测文本框中的哪些文字突出显示...
目前我正在处理附加部分......
<tr>
<td></td>
<td>
<div class="button style" id="btnBold"><b>B</b></div>
</td>
</tr>
<tr>
<td></td>
<td><asp:TextBox runat="server" ID="txtMailMessage" TextMode="MultiLine" Width="430" Height="100"></asp:TextBox></td>
</tr>
<script type="text/javascript">
//
// TEXT STYLE BUTTONS
//
$("#btnBold").click(function () {
var textbox = $("#<%= txtMailMessage.ClientID %>");
textbox.text(textbox.text + "[b][/b]");
});
</script>
在我看来,这似乎在理论上起作用...... 我使用此代码得到的是保留文本框中的当前文本,然后添加标签。
如果我在文本框为空时尝试,我会得到以下内容:
function (a) {
return p.access(this, function(a) {
return a===b ? p.text(this) : this.empty().append((this[0] && this[0].ownerDocument || e).createTextNode(a))
}, null, a, arguments.length)
}
如果文本框中已有文字,则点击什么都不做......
任何人都可以帮助我添加(主要)并对控件中所选文本的格式提供一些指导吗?
谢谢!
答案 0 :(得分:3)
而不是:
textbox.val(textbox.val() + "[b][/b]");
您是否尝试将标签放在文本周围?如果您想在文本框中设置文本格式,您应该这样做:
textbox.val("[b]" + textbox.val() + "[/b]");
如果您想将标签放在所选文本周围,或者如果没有选择任何内容则附加,您可以创建一个javascript函数来为您执行此操作。这是代码:
function addTagsToSelectedText(e) {
var yourInputText = $("#yourtext");
//Here you get the start of the selection
var ss = yourInputText[0].selectionStart;
//Here you get the end of the selection
var se = yourInputText[0].selectionEnd;
var text = yourInputText.val();
//if there are no selections just append.
if (ss == se)
yourInputText.val(text + "[b][/b]");
else
yourInputText.val(text.substr(0, ss) + "[b]" + text.substr(ss, se) + "[/b]" + text.substring(se, text.length));
}
您需要将此函数用作mousedown事件的处理程序。那是因为当您单击某个按钮时,您将失去其他元素中的选择。因此,您将在mousedown上使用它,而选择仍处于活动状态:
<button onmousedown="addTagsToSelectedText(event)">click</button>
我希望它有所帮助。