javascript - 当单击粗体或斜体标签时光标位于中间?

标签 javascript html css

我在我的一个 Torrent 网站中使用此代码。 当您单击 'B' TAG 时,下一个代码会显示 [b][/b]。但是,完成此操作后,光标的位置将位于这些标记的开头而不是中间,如下所示:[b]cursor here[/b]

这是代码:

<script type="text/javascript">
function BBTag(tag, s, text, form) {
    switch (tag) {
        case '[url]':
            var start = document.forms[form].elements[text].selectionStart;
            var end = document.forms[form].elements[text].selectionEnd;
            if (start != end) {
                var body = document.forms[form].elements[text].value;
                var left = body.substr(body, start);
                var middle = "[url]" + body.substring(start, end) + "[/url]";
                var right = body.substr(end, body.length);
                document.forms[form].elements[text].value = left + middle + right;
            } else {
                document.forms[form].elements[text].value = document.forms[form].elements[text].value + "[url][/url]";
            }
            document.forms[form].elements[text].focus();
    }

这是插入这些标签的代码:

<td align="center">
    <input type="button" name="url" value="URL " onclick="javascript: BBTag('[url]', 'url', '<?php echo $name; ?>', '<?php echo $form; ?>')" />
</td>

最佳答案

你忘了用大括号关闭函数:

<script type="text/javascript">
    function BBTag(tag, s, text, form) {
        switch (tag) {
            case '[url]':
                var start = document.forms[form].elements[text].selectionStart;
                var end = document.forms[form].elements[text].selectionEnd;
                if (start != end) {
                    var body = document.forms[form].elements[text].value;
                    var left = body.substr(body, start);
                    var middle = "[url]" + body.substring(start, end) + "[/url]";
                    var right = body.substr(end, body.length);
                    document.forms[form].elements[text].value = left + middle + right;
                } else {
                    document.forms[form].elements[text].value = document.forms[form].elements[text].value + "[url][/url]";
                }
                document.forms[form].elements[text].focus();
        }
    // You miss a function closing curly bracket here
</script>

我建议您使用干净的缩进代码。所以下次你会发现这类错误。

关于javascript - 当单击粗体或斜体标签时光标位于中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18204542/

相关文章:

javascript - 了解元素焦点如何与 JavaScript 配合使用

css - 语义 HTML5 结构与 CSS 布局需求

javascript - 合并复选框所需的 jQuery 代码以缩短代码

javascript - 自定义 parsley.js 以在违规字段附近显示图标

javascript - 主干继承——深度复制

javascript - 如何将 html 页面中的 div 内容加载到主页上的 div 中?

javascript - 制作一个移动的圆圈

javascript - 将鼠标悬停在图像上时,图像会缩小,但尺寸保持不变

html - CSS flex 盒居中

javascript - PHP AJAX POST 多个同名