制作留言簿:用户在多行文本框(留言内容)内只是按了几个回车或空格,并没写任何其他文本,如何禁止他提交?

i169net 2004-04-18 01:19:43
最近学着作了一个简单的留言簿,基本好了,但总觉得还有些不足——

留言内容:<asp:TextBox id="r" runat="server" TabIndex="6" Width="300px" TextMode="MultiLine" Height="80px" Rows="5" Columns="80"></asp:TextBox>

提交后,提取是:
string neirong=Server.HtmlEncode(r.Text);
加了个判断:
if (!(neirong=="")) { 如果留言内容不为空,允许提交至数据库 }

但只要在TextBox里输入回车、空格...也提交成功了,用(neirong=="")无法判断出~

请教:应该怎么补充代码?
让只有回车和空格的输入,不会被提交?

...全文
105 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztx998 2004-04-19
  • 打赏
  • 举报
回复
up
曲滨_銘龘鶽 2004-04-18
  • 打赏
  • 举报
回复
Trim("\r\n") 可以写一起。
曲滨_銘龘鶽 2004-04-18
  • 打赏
  • 举报
回复
Trim()//去空格
Trim("\r")
Trim("\n")
//去换行回车
Trim(" ")//去全角字符空格.
潜水员2099 2004-04-18
  • 打赏
  • 举报
回复
后台直接用this.r.Text.ToString().Trim()是否等于""就可以判断了,javascript判断稍微复杂点,参看给你写的代码,测试通过

Milititextbox.aspx

<%@ Page language="c#" Codebehind="Milititextbox.aspx.cs" AutoEventWireup="false" Inherits="aspnettest.Milititextbox" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Milititextbox</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language=javascript>
<!--
function checkinput()
{
var input = document.all("r").value;
if(input == "")
{
alert("空!");
}
else
{
var i;
var count = 0; //空格、回车字符的个数

for(i=0; i<input.length; i++)
{
var temp = input.charCodeAt(i);//input[i];
// alert(temp);
if(temp == 13)
{//回车
count++;
}
else if(temp == 32)
{//空格
count++;
}
else if(temp == 10)
{//ASCII码的'\n'
count++;
}
}

if(input.length == count)
{
alert('输入的都是空格和回车!');
}
else
{
alert(input);
}
}
}
//-->
</script>

</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:TextBox id="r" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"
TextMode="MultiLine" Height="112px" Width="224px"></asp:TextBox>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 296px; POSITION: absolute; TOP: 48px" runat="server"
Text="提交看看"></asp:Button>
<INPUT id="checkit" style="Z-INDEX: 103; LEFT: 432px; POSITION: absolute; TOP: 48px" type="button"
value="JS脚本验证" onclick="checkinput();">
</form>
</body>
</HTML>

Milititextbox.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace aspnettest
{
/// <summary>
/// Milititextbox 的摘要说明。
/// </summary>
public class Milititextbox : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox r;
protected System.Web.UI.WebControls.Button Button1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void Button1_Click(object sender, System.EventArgs e)
{
if(this.r.Text.ToString().Trim() == "")
{
this.Page.RegisterStartupScript("kong","<script>alert('空!');</script>");
}
else
{
this.Page.RegisterStartupScript("aa","<script>alert('内容为:"+ this.r.Text.ToString().Trim() +"!');</script>");
}
}
}
}



xaodoudou 2004-04-18
  • 打赏
  • 举报
回复
还是在客户端用正则表达式好
erictang2003 2004-04-18
  • 打赏
  • 举报
回复
System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex( @"\s" );
string tmp = textBox.Text;//去掉两头空格;
if( tmp != null && tmp.Length > 0 && !rx.IsMatch( tmp ) ){
//提交数据库;
}
i169net 2004-04-18
  • 打赏
  • 举报
回复
用长度 length 看看是不是为0

在多行文本框里输入空格键,会被转化成 <br> ,所以长度不会为0的............


i169net 2004-04-18
  • 打赏
  • 举报
回复
按您说的,先定义:
System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex( @"\s" );

在判断:
if (!(rx.IsMatch( textBox.Text.Trim())) { 允许提交至数据库 }

但这样好象不行啊,甚至textBox.Text为空的时候也允许提交了...

页面——————
http://chs.gotdotnet.com/quickstart/aspplus/doc/webvalidation.aspx
里面说到了正则表达式,但我不知道应该怎么写?

大虾们,帮帮小弟啊.........................

iwish100000 2004-04-18
  • 打赏
  • 举报
回复
用长度 length 看看是不是为0
erictang2003 2004-04-18
  • 打赏
  • 举报
回复
服务器端:
System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex( @"\s" );//匹配任何空白字符,包括空格、制表符、换页符等等;

if( rx.IsMatch( textBox.Text.Trim() ) ){
Response.Write( "请写点什么" );
return;
}

也可以用ASP.NET 的 System.Web.UI.WebControls.RequiredFieldValidator 具体看
http://chs.gotdotnet.com/quickstart/aspplus/doc/webvalidation.aspx
ztx998 2004-04-18
  • 打赏
  • 举报
回复
空格好判断,用trim()去掉空格后再判断TextBox里的内容是不是为空

至于回车吗?再想想

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧