格式化并附加文本框

时间:2012-10-30 10:49:32

标签: jquery asp.net textbox

我正在努力允许在我的网站上格式化邮件。基本上,我的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)
}

如果文本框中已有文字,则点击什么都不做......

任何人都可以帮助我添加(主要)并对控件中所选文本的格式提供一些指导吗?

谢谢!

1 个答案:

答案 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>

我希望它有所帮助。