这是我写的 UBB 编辑器, 不过解码和编码都在服务端代码, 不方便乱贴. <script type="text/javascript">
//<![CDATA[ Subject: Javascript 插入 UBB标签 到表单 文本域 函数 及演示 By shawl.qiu
//表单 必须有 ID, 文件域 name 必须为 content
//------------------------------------start 例子
//<form action="" method="post" name="ubbForm" id="ubbForm">
//  <input type="button" value="code" onclick="ubbTag(this.form.id,'[code]')" /><br/>
//  <textarea name="content" cols="80" rows="10">aaaaaaaaaa</textarea><br/>
//  <input type="submit" name="Submit" value="Submit" />
//  <input type="reset" name="Reset" value="Reset" />
//</form>
//-------------------------------------end 例子
function ubbTag(fId, str){
document.getElementById(fId).content.focus();
var strEnd=str.replace(/\[/ig,'[/')
if (strEnd.indexOf('=')>-1){
strEnd=strEnd.replace(/(.*?)\=.*?\]/,'$1]')
}
if((document.selection)&&(document.selection.type== "Text")){
var oStr=document.selection.createRange();
oStr.text=str+oStr.text+strEnd
} else {
document.getElementById(fId).content.value+=str+strEnd
}
} // shawl.qiu script
//]]>
</script>
<form action="" method="post" name="ubbForm" id="ubbForm">
<select onchange="ubbTag(this.form.id,'['+this.value+']')">
<option value="h6">h6</option>
<option value="h5">h5</option>
<option value="h4">h4</option>
<option value="h3">h3</option>
<option value="h2">h2</option>
<option value="h1">h1</option>
<option value="h1" selected="selected">font size</option>
</select>
<select onchange="ubbTag(this.form.id,'[color='+this.value+']')">
<option value="black">color</option>
<option value="black" style="background-color:black; color:#FFFFFF;">black</option>
<option value="blue" style="background-color:blue; color:#FFFFFF;">blue</option>
<option value="fuchsia" style="background-color:fuchsia; color:#FFFFFF;">fuchsia</option>
<option value="gray" style="background-color:gray; color:#FFFFFF;">gray</option>
<option value="green" style="background-color:green; color:#FFFFFF;">green</option>
<option value="lime" style="background-color:lime;">lime</option>
<option value="maroon" style="background-color:maroon; color:#FFFFFF;"> maroon </option>
<option value="navy" style="background-color:navy; color:#FFFFFF;">navy</option>
<option value="olive" style="background-color:olive; color:#FFFFFF;">olive</option>
<option value="orange" style="background-color:orange; color:#FFFFFF;">orange</option>
<option value="purple" style="background-color:purple; color:#FFFFFF;">purple</option>
<option value="red" style="background-color:red; color:#FFFFFF;">red</option>
<option value="silver" style="background-color:silver; color:#FFFFFF;">silver</option>
<option value="teal" style="background-color:teal; color:#FFFFFF;">teal</option>
<option value="white" style="background-color:white;">white</option>
<option value="yellow"style="background-color:yellow;">yellow</option>
</select>
<input type="button" value="url" onclick="ubbTag(this.form.id,'[url]')"/>
<input type="button" value="img" onclick="ubbTag(this.form.id,'[img]')"/>
<input type="button" value="email" onclick="ubbTag(this.form.id,'[email]')"/>
<input type="button" value="code" onclick="ubbTag(this.form.id,'[code]')" />
<input type="button" value="quote" onclick="ubbTag(this.form.id,'
Quote:
')"/>
<input type="button" value="cite" onclick="ubbTag(this.form.id,'[cite]')"/>
<input type="button" value="linenum" onclick="ubbTag(this.form.id,'[linenum]')"/>
<input type="button" value="b" onclick="ubbTag(this.form.id,'[b]')"/> 
<input type="button" value="left" onclick="ubbTag(this.form.id,'[align=left]')"/> 
<input type="button" value="center" onclick="ubbTag(this.form.id,'[align=center]')"/> 
<input type="button" value="right" onclick="ubbTag(this.form.id,'[align=right]')"/> 
<input type="button" value="textarea" onclick="ubbTag(this.form.id,'[textarea]')"/>
<input type="button" value="pre" onclick="ubbTag(this.form.id,'[pre]')"/>
<input type="button" value="xmp" onclick="ubbTag(this.form.id,'[xmp]')"/> 
<input type="button" value="sub" onclick="ubbTag(this.form.id,'[sub]')"/> 
<input type="button" value="sup" onclick="ubbTag(this.form.id,'[sup]')"/> 
<input type="button" value="abbr" onclick="ubbTag(this.form.id,'[abbr]')"/>
<input type="button" value="address" onclick="ubbTag(this.form.id,'[address]')"/> 
<input type="button" value="dl" onclick="ubbTag(this.form.id,'[dl][dd]')"/> 
<input type="button" value="dt" onclick="ubbTag(this.form.id,'[dt]')"/> 
<input type="button" value="dd" onclick="ubbTag(this.form.id,'[dd]')"/> 
<input type="button" value="nl" onclick="ubbTag(this.form.id,'[nl][li]')"/> 
<input type="button" value="ol" onclick="ubbTag(this.form.id,'[ol][li]')"/> 
<input type="button" value="ul" onclick="ubbTag(this.form.id,'[ul][li]')"/> 
<input type="button" value="li" onclick="ubbTag(this.form.id,'[li]')"/> 
<input type="button" value="floatleft" onclick="ubbTag(this.form.id,'[float=left]')"/> 
<input type="button" value="floatright" onclick="ubbTag(this.form.id,'[float=right]')"/> 
<input type="button" value="tagLink" onclick="ubbTag(this.form.id,'[taglink]')"/> 
<input type="button" value="glLink" onclick="ubbTag(this.form.id,'[gllink]')"/> <br/>
  <textarea name="content" cols="80" rows="10">aaaaaaaaaa</textarea><br/>
  <input type="submit" name="Submit" value="Submit" />
  <input type="reset" name="Reset" value="Reset" />
</form>