javascript - 如何仅在开头标签中为颜色添加值

标签 javascript

我有这段代码用于生成 bbcode 标签:

PerformBBCode: function(TextArea, Operation, Value) {
            bbcodeOpts = {
                opener: '[',
                closer: ']'
            }
            switch (Operation) {

                /* added color fonts */
                case 'red':
                    $(TextArea).insertRoundTag('color', bbcodeOpts, {'': 'red'});

                    break;

                /* end color fonts */

                case 'bold':
                    $(TextArea).insertRoundTag('b', bbcodeOpts);
                    break;

                case 'italic':
                    $(TextArea).insertRoundTag('i', bbcodeOpts);
                    break;

在粗体和斜体的情况下,按下按钮时会产生:

[b][/b]
[i][/i]

红色的情况在我上面的代码中产生了这个:

[color ="red"][/color]

应该是这样的:

[color=red][/color]

我怎样才能实现这个目标?

更新:

这是 $.fn.insertRoundTag:

 $.fn.insertRoundTag = function(tagName, opts, props) {
    var opentag = opts.opentag != undefined ? opts.opentag : tagName;
    var closetag = opts.closetag != undefined ? opts.closetag : tagName;
    var prefix = opts.prefix != undefined ? opts.prefix : '';
    var suffix = opts.suffix != undefined ? opts.suffix : '';
    var prepend = opts.prepend != undefined ? opts.prepend : '';
    var replace = opts.replace != undefined ? opts.replace : false;
    var opener = opts.opener != undefined ? opts.opener : '';
    var closer = opts.closer != undefined ? opts.closer : '';
    var closeslice = opts.closeslice != undefined ? opts.closeslice : '/';
    var closetype = opts.closetype != undefined ? opts.closetype : 'full';
    var shortprop = opts.shortprop;
    var focusprop = opts.center;
    var hasFocused = false;
     strStart = prefix + opener + opentag;
    strEnd = '';

    if (shortprop) {
        strStart = strStart + '="' + shortprop;
        if (focusprop == 'short') {
            strEnd = strEnd + '"';
            hasFocused = true;
        }
        else
            strStart = strStart + '"';
    }
    if (props) {
        var focusing = false;
        for (var param in props) {
            if (hasFocused) {
                strEnd = strEnd + ' ' + param + '="' + props[param] + '"';
                continue;
            }

            if (!hasFocused) {
                strStart = strStart + ' ' + param + '="' + props[param];
                if (param == focusprop) {
                    focusing = true;
                    hasFocused = true;
                }
            }

            if (focusing) {
                strEnd = strEnd + '"';
                focusing = false;
            } else {
                strStart = strStart + '"';
            }
        }
    }

    strReplace = '';
    if (prefix) {
        var selection = $(this).hasSelection();
        if (selection) {
            strReplace = selection.replace(/\n/g, '\n' + prefix);
        }
    }

    if (replace != false) {
        strReplace = replace;
    }

    if (closetype == 'full') {
        if (!hasFocused)
            strStart = strStart + closer;
        else
            strEnd = strEnd + closer;

        strEnd = strEnd + opener + closeslice + closetag + closer + suffix;
    } else {
        if (closeslice && closeslice.length)
            closeslice = " " + closeslice;
        if (!hasFocused)
            strStart = strStart + closeslice + closer + suffix;
        else
            strEnd = strEnd + closeslice + closer + suffix;
    }
    $(this).insertRoundCaret(strStart + prepend, strEnd, strReplace);
}

最佳答案

这些 block 更改可以满足您的需要,但可能会破坏其他情况!这意味着您可能需要基于 if (tagName == 'color') 的条件逻辑

    if (hasFocused) {
        strEnd = strEnd + param + "=" + props[param];
        continue;
    }

    if (!hasFocused) {
        strStart = strStart + param + "=" + props[param];
        if (param == focusprop) {
            focusing = true;
            hasFocused = true;
        }
    }

    if (focusing) {
        //strEnd = strEnd + '"';
        focusing = false;
    } else {
        //strStart = strStart + '"';
    }

关于javascript - 如何仅在开头标签中为颜色添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34640635/

相关文章:

javascript - 天气 API 和 JSON

javascript - 用 Javascript 解决 Project Euler 16

javascript - 从 JavaScript 正确调用 Controller - ASP.NET MVC

javascript - 如何让每个元素在点击时改变颜色?

javascript - 使用 cookie 更改 header 内容

javascript - Chrome 触发滚动事件

javascript - 下拉框一直向上滚动

javascript - AngularJS 指令隔离作用域行为

javascript - Wix react-native-navigation 改变Tab和推屏

使用 Django 进行 Javascript 验证