2

我正在努力允许在我的网站上格式化消息。基本上,我的粗体、斜体、下划线等按钮将在我的文本框中的文本上附加 [b][/b]、[i][/i]、[u][/u] 等标签。

我什至没有看过格式化突出显示的文本,因为我不知道如何检测文本框中的哪些文本被突出显示......

目前我正在处理附加部分......

<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)
}

如果文本框中已经有文本,则单击根本不执行任何操作...

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

谢谢!

4

1 回答 1

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 事件的处理程序。那是因为当您单击一个按钮时,您会失去对其他元素的选择。因此,您将在鼠标按下时使用它,而选择仍处于活动状态:

<button onmousedown="addTagsToSelectedText(event)">click</button>

我希望它有所帮助。

于 2012-10-30T10:54:17.527 回答