不允许在GridView文本框中使用句号,逗号等

时间:2016-05-23 14:57:29

标签: javascript c# asp.net gridview

我有一个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;
}

但是如果他们输入无效字符,我该如何提醒用户? 有没有办法在输入无效字符时立即提醒用户,或者我是否需要等到他们填写完文本框后才会这样做?

2 个答案:

答案 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功能用于在显示警告信息之前显示字符。