我有这段代码用于生成 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/