如何使用 javascript 使用 bbcode 包装 select 文本
How to wrap select text with bbcode using javascript
请给我这个 javascript 代码,我想让它用 bbcode 示例 [b]peter[/b] 包裹选定的文本,但对我不起作用,有人可以修复它或给我想法吗是吗?
<script type="text/javascript">
function bbcoder(){
var old = "";
var value = textarea.value;
var startPos = textarea.selectionStart;
var endPos = textarea.selectionEnd;
var selectedText = value.substring( startPos, endPos );
function bbbold(){
var old=document.getElementsByName("blog_body")[0].value;
document.getElementsByName("blog_body")[0].value=old+"[b]"+ selectedText +"[/b]";
}
function bbitalic(){
var old=document.getElementsByName("blog_body")[0].value;
document.getElementsByName("blog_body")[0].value=old+"[i]"+ selectedText +"[/i]";
}
function bbunder(){
var old=document.getElementsByName("blog_body")[0].value;
document.getElementsByName("blog_body")[0].value=old+"[u]"+ selectedText +"[/u]";}
function bbquote(){
var old=document.getElementsByName("blog_body")[0].value;
document.getElementsByName("blog_body")[0].value=old+"[quote]"+ selectedText +"[/quote]";
}
</script>
这是html表格
<div id="editor">
<ul id="buttons">
<li><a href="javascript:void(0);" onclick="bbbold()">B</a></li>
<li><a href="javascript:void(0);" onclick="bbunder()"><u>U</u></a></li>
<li><a href="javascript:void(0);" onclick="bbitalic()">I</a></li>
<li><a href="javascript:void(0);" onclick="bbquote()">""</a></li>
</ul>
<form id="editor-form" action="" method="post">
<div>
<textarea id="blog_body" name="blog_body" rows="15" cols="20" placeholder="Use editor buttons on selected text"></textarea>
</div>
<p><input type="submit" value="Save"></p>
</form>
</div>
更新:jsFiddle请注意,我无法在 jsFiddle 中使用函数内部函数,因此不得不将它们移出。
试试下面的代码
function bbcoder(code) {
try {
var old = "";
var textarea = document.getElementsByName("blog_body")[0];
var value = textarea.value;
var startPos = textarea.selectionStart;
var endPos = textarea.selectionEnd;
var selectedText = value.substring(startPos, endPos);
switch (code) {
case 'B':
bbbold();
break;
case 'U':
bbunder();
break;
case 'I':
bbitalic();
break;
case 'Q':
bbquote();
break;
default:
alert('Invalid argument');
break;
}
function bbbold() {
var old = textarea.value;
textarea.value = old.replaceBetween(startPos, endPos, "[b]" + selectedText + "[/b]");
}
function bbitalic() {
var old = textarea.value;
textarea.value = old.replaceBetween(startPos, endPos, "[i]" + selectedText + "[/i]");
}
function bbunder() {
var old = textarea.value;
textarea.value = old.replaceBetween(startPos, endPos, "[u]" + selectedText + "[/u]");
}
function bbquote() {
var old = textarea.value;
textarea.value = old.replaceBetween(startPos, endPos, "[quote]" + selectedText + "[/quote]");
}
} catch (e) {
alert(e.toString());
}
}
//
String.prototype.replaceBetween = function (start, end, what) {
return this.substring(0, start) + what + this.substring(end);
};
请给我这个 javascript 代码,我想让它用 bbcode 示例 [b]peter[/b] 包裹选定的文本,但对我不起作用,有人可以修复它或给我想法吗是吗?
<script type="text/javascript">
function bbcoder(){
var old = "";
var value = textarea.value;
var startPos = textarea.selectionStart;
var endPos = textarea.selectionEnd;
var selectedText = value.substring( startPos, endPos );
function bbbold(){
var old=document.getElementsByName("blog_body")[0].value;
document.getElementsByName("blog_body")[0].value=old+"[b]"+ selectedText +"[/b]";
}
function bbitalic(){
var old=document.getElementsByName("blog_body")[0].value;
document.getElementsByName("blog_body")[0].value=old+"[i]"+ selectedText +"[/i]";
}
function bbunder(){
var old=document.getElementsByName("blog_body")[0].value;
document.getElementsByName("blog_body")[0].value=old+"[u]"+ selectedText +"[/u]";}
function bbquote(){
var old=document.getElementsByName("blog_body")[0].value;
document.getElementsByName("blog_body")[0].value=old+"[quote]"+ selectedText +"[/quote]";
}
</script>
这是html表格
<div id="editor">
<ul id="buttons">
<li><a href="javascript:void(0);" onclick="bbbold()">B</a></li>
<li><a href="javascript:void(0);" onclick="bbunder()"><u>U</u></a></li>
<li><a href="javascript:void(0);" onclick="bbitalic()">I</a></li>
<li><a href="javascript:void(0);" onclick="bbquote()">""</a></li>
</ul>
<form id="editor-form" action="" method="post">
<div>
<textarea id="blog_body" name="blog_body" rows="15" cols="20" placeholder="Use editor buttons on selected text"></textarea>
</div>
<p><input type="submit" value="Save"></p>
</form>
</div>
更新:jsFiddle请注意,我无法在 jsFiddle 中使用函数内部函数,因此不得不将它们移出。
试试下面的代码
function bbcoder(code) {
try {
var old = "";
var textarea = document.getElementsByName("blog_body")[0];
var value = textarea.value;
var startPos = textarea.selectionStart;
var endPos = textarea.selectionEnd;
var selectedText = value.substring(startPos, endPos);
switch (code) {
case 'B':
bbbold();
break;
case 'U':
bbunder();
break;
case 'I':
bbitalic();
break;
case 'Q':
bbquote();
break;
default:
alert('Invalid argument');
break;
}
function bbbold() {
var old = textarea.value;
textarea.value = old.replaceBetween(startPos, endPos, "[b]" + selectedText + "[/b]");
}
function bbitalic() {
var old = textarea.value;
textarea.value = old.replaceBetween(startPos, endPos, "[i]" + selectedText + "[/i]");
}
function bbunder() {
var old = textarea.value;
textarea.value = old.replaceBetween(startPos, endPos, "[u]" + selectedText + "[/u]");
}
function bbquote() {
var old = textarea.value;
textarea.value = old.replaceBetween(startPos, endPos, "[quote]" + selectedText + "[/quote]");
}
} catch (e) {
alert(e.toString());
}
}
//
String.prototype.replaceBetween = function (start, end, what) {
return this.substring(0, start) + what + this.substring(end);
};