需要服务器端验证搜索文本框



我有一个asp.net文本框,它不允许特殊字符除了%。我想在服务器端验证这一点。我已经写好了代码。但是这个正则表达式不起作用。我用Javascript编写了这些代码。但问题是,它不是验证服务器端。请参考代码

<script type="text/javascript">
$(document).ready(function (e) {
    $('#ctl00_topNavigation_txtSearch').bind('keypress', function (event) {
        if (event.which == 13 || event.keyCode == 13) {
            window.location.href = "search.aspx?tx=" + $(this).val();
            return false;
        } else {
            var regex = new RegExp("^[.a-zA-Z0-9b _ _%]+$");
            var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
            if (!regex.test(key)) {
                event.preventDefault();
                return false;
            }
        }
        return true;
    });
    $('#ctl00_topNavigation_txtSearch').bind("cut copy paste", function (e) {    
            e.preventDefault();
        });
    });

另请参阅搜索文本框的html

<asp:TextBox ID="txtSearch" runat="server" class="txtfld-search"></asp:TextBox>

请帮忙,这样我可以验证它的服务器端

服务器端验证:

<asp:TextBox ID="txtSearch" runat="server" class="txtfld-search"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
            ControlToValidate="txtSearch" ErrorMessage="*" ValidationGroup="req"
            ValidationExpression="^[.a-zA-Z0-9b _ _%]+$"></asp:RegularExpressionValidator>

验证服务器验证器控件使用Javascript:

$(document).ready(function() {
   $('#txtSearch').bind('keypress', function(event) {
   if (Page_ClientValidate("req")) //req is the ValidationGroup name
   {
         //alert("valid");
   }
   else {
           //alert("Invalid");
   }
   });
});

这个代码工作,我已经测试了它!

注意: "req"是正则表达式验证器的ValidationGroup名称!希望这对你有所帮助!

最新更新