我有一个GridView,其中一列是文本框:
<asp:GridView style="width:75%;float:left"
ID="gvPieceOutturns"
ShowHeaderWhenEmpty="false"
CssClass="tblResults"
runat="server"
OnRowDataBound="gvPieceOutturns_ItemDataBound"
DataKeyField="ID"
AutoGenerateColumns="false"
allowpaging="false"" />
<Columns>
<asp:TemplateField HeaderText="Comment" SortExpression="MemComment">
<ItemTemplate>
<asp:TextBox ID="txtMemComment" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我想在文本框中添加一些验证,以防止用户输入句号,逗号等。只允许使用字母和数字。
我有一个在用户选中文本框时调用的函数:
protected void UpdateMemOutturnComment(object sender, EventArgs e)
{
string Comment = hfMemOutturnComment.Value;
}
但是如果他们输入无效字符,我该如何提醒用户? 有没有办法在输入无效字符时立即提醒用户,或者我是否需要等到他们填写完文本框后才会这样做?
答案 0 :(得分:2)
我建议你研究一下ASP.NET RegularExpressionValidators。它们允许您根据正则表达式验证输入。如果输入不匹配,它会提醒用户并且不允许提交。我相信它会在用户离开现场时触发。
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
ControlToValidate="TextBox1" runat="server"
ErrorMessage="Only Numbers and letters are allowed"
ValidationExpression="^[a-zA-Z0-9]*$" />
如果您不熟悉正则表达式,它只会匹配包含小写和大写字母以及数字的字符串
答案 1 :(得分:1)
您可以使用RegularExpressionValidator进行标准验证,并使用警告消息调用TextBox的onkeypress
事件进行立即验证:
<asp:TemplateField HeaderText="Comment" SortExpression="MemComment" ItemStyle-CssClass="memComment">
<ItemTemplate>
<asp:TextBox ID="txtMemComment" runat="server" onkeypress="ValidateMemComment(event);" />
<asp:RegularExpressionValidator ID="revMemComment" runat="server" CssClass="validatorMemComment" ControlToValidate="txtMemComment" ValidationExpression="^[a-zA-Z0-9]*$" Text="*" ErrorMessage="Invalid character" ForeColor="Red" Display="Dynamic" />
</ItemTemplate>
</asp:TemplateField>
以下CSS样式类可防止TextBox与单元格中的验证程序之间的换行符:
.memComment
{
white-space: nowrap;
}
客户端代码中的onkeypress
事件处理程序如下所示:
<script type="text/javascript">
function ValidateMemComment(event) {
var code = event.which || event.keyCode;
var isNumeric = (48 <= code && code <= 57);
var isUpperAlpha = (65 <= code && code <= 90);
var isLowerAlpha = (97 <= code && code <= 122);
if (!isNumeric && !isUpperAlpha && !isLowerAlpha) {
setTimeout(function () { alert("Invalid character!"); }, 0);
}
}
</script>
setTimeout
功能用于在显示警告信息之前显示字符。