多文本区显示问题

  由于HTML本身的原因,不会处理字符串里的空格和回车。因此,当通过form的textarea域的多文本内容存入数据库后,再将其显示出来,格式就不好控制了。显示的格式就和存储输入的格式不一样。为了解决这个问题,就需要在显示文本时,将其中的空格和回车进行相应的替换。其中将空格替换成“&nsp;”,将回车替换成”chr(13)”。实例环境:数据库为Oracle7.3,同时采用Netscape的LiveWire进行数据库接口处理。函数代码如下:

  例:现需要从know表找出know_id等于16的记录,显示其中的content字段,此字段包含了空格和回车,因此在显示时,需要做如下处理:

<server>

sString=replaceChars(sString,’ ‘,’ &nbsp;’);

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;

}

返回