主题:  ASP留言回车换行?

cwlcwr78

职务:普通成员
等级:1
金币:1.0
发贴:149
#12003/5/6 16:02:09
如何控制ASP留言内容的换行
如客户端用回车换行
显示 也是换行?



=ridincal=

职务:管理员
等级:7
金币:20.0
发贴:5886
#22003/5/6 16:06:25
提交时将回车符替换为"
":
function htmlencode(str)
{
htmlencode=str.replace(/\n/g,"
");
}

编辑历史:[这消息被ridincal编辑过(编辑时间2003-05-06 16:59:26)]


{ 在指尖上绽放的花朵 }

职务:普通成员
等级:5
金币:14.0
发贴:3209
#32003/5/6 16:25:16
…… 不是吧……

好快的速度……



cwlcwr78

职务:普通成员
等级:1
金币:1.0
发贴:149
#42003/5/6 21:16:31
留言部分是

显示留言部分是
<%=rs("tietle")%>
该成
<%=rs("tietle"); tietle=replace(tietle,"<","<",">",">","<|>","vbCrLf,"
","  ") %>
结果是错误!
怎么该???



我佛山人

职务:版主
等级:4
金币:16.0
发贴:2269
#52003/5/7 4:32:29
<%
function HTMLEncode(fString)
if fString<>"" then
fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")

fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "

")
fString = Replace(fString, CHR(10), "
")
end if
HTMLEncode = fString
end function
%>
<%=HTMLEncode(rs("tietle").value)%>



cwlcwr78

职务:普通成员
等级:1
金币:1.0
发贴:149
#62003/5/7 12:23:24
多谢谢各位 已经搞定



{ 在指尖上绽放的花朵 }

职务:普通成员
等级:5
金币:14.0
发贴:3209
#72003/5/7 13:41:37
散人前辈最近失眠?



cwlcwr78

职务:普通成员
等级:1
金币:1.0
发贴:149
#82003/5/7 14:50:36



网络小精灵

职务:普通成员
等级:3
金币:1.1
发贴:761
#92005/11/29 22:00:44
ridincal在上个帖子中说
引用:
提交时将回车符替换为"
":
function htmlencode(str)
{
htmlencode=str.replace(/\n/g,"
");
}




上面的代码加在哪里?我的只是一个多行文本框
<textarea name="en_details" cols="102`" rows="10" class="textarea"></textarea>

编辑历史:[此帖最近一次被 Gzink 编辑过(编辑时间:2005-11-30 11:21:40)]


浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#102005/12/1 10:09:33
ridincal乃此道高手,需要有一定的悟性才能做他的学生呀。我给你一个最简单的留言程式吧。
第一个页面:guest.asp
先看代码
<%
	'打开Access数据库
	Function OpenAccess(MDBFileName,PIN)
		Dim StrConn
		StrConn="Provider=Microsoft.Jet.OLEDB.4.0"
		StrConn=StrConn & ";Persist Security Info=False"
		StrConn=StrConn & ";Jet OLEDB:Database Password=" & PIN
		StrConn=StrConn & ";Data Source=" & Server.MapPath(MDBFileName)
		Set OpenAccess=Server.CreateObject("ADODB.Connection")
		OpenAccess.Open strConn
	End Function
	'关闭Access数据库
	Sub CloseAccess(ConnAccess)
		ConnAccess.Close
		Set ConnAccess=Nothing
	End Sub
%>
<%
  Dim strSQL,objConn,objRS
  Set objConn=OpenAccess("guest.mdb","")
  strSQL="select * from guestbook order by gID Desc"
  Set objRS=objConn.Execute(strSQL)
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>用户留言</title>
<script type="text/javascript">

//判断字符串是否为空字符串
function isNull(str){
  var re=/^[ \s]*$/;
  return re.test(str);
}
  function checkform(obj){
    if(isNull(obj.gContent.value)){
	  alert("请输入留言内容!");
	  obj.gContent.value="";
	  obj.gContent.focus();
	  return false;
	}else{
	  return true;
	}
  }
</script>
</head>

<body>
<%
  do while not objRS.EOF
%>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#CCCCCC"><%=objRS("gTime")%></td>
  </tr>
  <tr>
    <td><%=Replace(objRS("gContent"),vbCrLf,"<br>")%></td>
  </tr>
</table>
<%
	objRS.MoveNext
  loop
  CloseAccess objConn
%>
<form name="form1" method="post" action="recordguest.asp" onsubmit="return checkform(this);">
  <table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr> 
      <td align="center">用户留言</td>
  </tr>
  <tr> 
      <td align="center"> 
        <textarea name="gContent" cols="50" rows="5" id="gContent"></textarea>
      </td>
  </tr>
  <tr> 
      <td align="center"><input type="submit" name="Submit" value="提交">
      </td>
  </tr>
</table>
</form>
</body>
</html>

页面执行效果

图片如下:



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#112005/12/1 10:27:41
guest页面有两个功能,先显示用户的留言,再提交表单供用户留言。
这真的是个很简单的留言板,只记录了用户的留言时间和留言内容。
最上面是两个通用的函数,用来打开和关闭Access数据库。
strSQL="select * from guestbook order by gID Desc"
gID是自增字段,使得显示留言时,最后的留言最先显示(显示在上面)

再看表单部分
<form name="form1" method="post" action="recordguest.asp" onsubmit="return checkform(this);">

在表单提交前,我们通常希望对表单的数据进行验证,通过验证后再交给后台程序来处理。所以在<form>标记中加入了 onsubmit="return checkform(this);",当用户点击了提交按钮后,先去执行函数checkform(),如果这个函数返回true,表单就提交,如果这个函数返回false,表单不提交。

再来看checkform()函数
function isNull(str){
var re=/^[ \s]*$/;
return re.test(str);
}
function checkform(obj){
if(isNull(obj.gContent.value)){
     alert("请输入留言内容!");
     obj.gContent.value="";
     obj.gContent.focus();
     return false;
    }else{
     return true;
    }
}

isNull()函数用来判断字符串是否为空或等效于空,如用户只输入了空格,那么等效于空。
当留言为空时,提示用户“请输入留言内容!”,将多行留言输入框的内容清空,并将焦点移到输入框,返回false,禁止表单提交。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#122005/12/1 10:30:03
Gzink在上个帖子中说
引用:
ridincal在上个帖子中说
引用:
提交时将回车符替换为"
":
function htmlencode(str)
{
htmlencode=str.replace(/\n/g,"
";
}




上面的代码加在哪里?我的只是一个多行文本框
<textarea name="en_details" cols="102`" rows="10" class="textarea"></textarea>


就是放在这里的,可以在checkform()函数中调用就成了。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#132005/12/1 10:31:45
再来看第二个页面,提交处理页面:recordguest.asp
<%
  Dim gContent
  gContent=Request("gContent")
  gContent=Replace(gContent,"'","''")
  
  Dim strSQL,objConn
  Set objConn=OpenAccess("guest.mdb","")
  strSQL="Insert into guestbook (gContent) Values('" & gContent & "')"
  objConn.Execute(strSQL)
  CloseAccess objConn
  Response.Redirect "guest.asp"
%>
<%
	'打开Access数据库
	Function OpenAccess(MDBFileName,PIN)
		Dim StrConn
		StrConn="Provider=Microsoft.Jet.OLEDB.4.0"
		StrConn=StrConn & ";Persist Security Info=False"
		StrConn=StrConn & ";Jet OLEDB:Database Password=" & PIN
		StrConn=StrConn & ";Data Source=" & Server.MapPath(MDBFileName)
		Set OpenAccess=Server.CreateObject("ADODB.Connection")
		OpenAccess.Open strConn
	End Function
	'关闭Access数据库
	Sub CloseAccess(ConnAccess)
		ConnAccess.Close
		Set ConnAccess=Nothing
	End Sub
%>



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#142005/12/1 10:41:06
这个处理程序也非常简单,去掉公用的打开关闭数据库代码,只有10来行了。

先取得用户提交的留言内容
gContent=Request("gContent")

然后将留言内容中的单引号替换成两个单引号
gContent=Replace(gContent,"'","''")
(因为SQL语句中,用'来作界定符,所以要使用两个单引号来表示')

然后将留言插入数据库。数据库只有三个字段:
gID:自增字段,关键字
gContent:文本字段,长200,用来存放留言内容
gTime:时间字段,默认值为Now(),当前时间。

最后,重新导向到第一个页面,就可以看到刚才的留言了。(第一个)

在显示留言内容时,执行了一个替换(第一个页面):
<%=Replace(objRS("gContent"),vbCrLf,"<br>")%>
将留言内容中的换行符vbCrLf替换成HTML的<br>标签了。如果要将留言内容仍然显示在多行文本框内,则不需要这种替换了。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#152005/12/1 10:43:45
不知说明白了没,就当作是给初学的弟兄们一个小教程吧。原文件在这里:
相关文件(rar):点这儿打开