|
多文本区显示问题
由于HTML本身的原因,不会处理字符串里的空格和回车。因此,当通过form的textarea域的多文本内容存入数据库后,再将其显示出来,格式就不好控制了。显示的格式就和存储输入的格式不一样。为了解决这个问题,就需要在显示文本时,将其中的空格和回车进行相应的替换。其中将空格替换成“&nsp;”,将回车替换成”chr(13)”。实例环境:数据库为Oracle7.3,同时采用Netscape的LiveWire进行数据库接口处理。函数代码如下: 例:现需要从know表找出know_id等于16的记录,显示其中的content字段,此字段包含了空格和回车,因此在显示时,需要做如下处理: <server> sString=replaceChars(sString,’ ‘,’ ’); sString=alterEnter(sString) write(sString) </server> function replaceChars(sString,sOld,sNew) { for (i = 0; i < sString.length;) { if (sString.substring(i, i + sOld.length) == sOld) { sString = sString.substring(0, i) + sNew + sString.substring(i + sOld.length, sString.length); i=i+sNew.length; } else i++; } return sString } function alterEnter(sString) { var li_start = 1; var li_enterPos=1 var ls_string,ls_left_string=' '; var ls_content;
dbconnect() ls_content="'"+sString+"'"
while(li_enterPos>0) { ls_sql="select instr("+ls_content+",chr(13),"+li_start+") enterPos from dual"
cur_enter=database.cursor(ls_sql) cur_enter.next() li_enterPos=cur_enter.enterPos cur_enter.close() if(li_enterPos>0) ls_sql = "select substr("+ls_content+","+li_start+","+(li_enterPos-li_start)+"+1)||'<br>' string from dual" else ls_sql = "select substr("+ls_content+","+li_start+",length("+ls_content+")-"+li_start+"+1) string from dual" cur_enter=database.cursor(ls_sql) cur_enter.next() ls_left_string=ls_left_string+cur_enter.string cur_enter.close() li_start=li_enterPos li_start++; }
return ls_left_string; } |