我在我的一个 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/