zoukankan      html  css  js  c++  java
  • Web表单验证中正则表达式应用初探

    “条条大路通罗马”,当我们陷入大量的编码,赶工期,超进度的时候,有时可能会迷失自己。我们似乎总是会过多的投入到功能的实现上,而并不注重代码质量的高低,事实上企业只看中的结果,代码的实现,没有多少人会关注。这往往会形成一种固有思维,即习惯于用一种思路编程,而忽略了其他的实现方式。我想这个应该不仅仅是我,是很多人都存在的毛病。

    怎么讲?记得自己在学校上学的时候,学习.net编程,总是很兴奋,喜欢尝试一些不同的方法。毕竟,在学校自己是毫无压力的。前几天,翻看了自己大学时上交的.NET课程作业,看了那些自己比较用心编写的代码之后,发现自己现在反而在思路方面局限了。不知道大家有没有这种感觉,特别是步入社会不久的程序员们。这种“惯性思维”是怎么形成的?我认为值得反省。

    于是就有了下文。

    写这篇文章,仅仅提醒下自己和正在犯这样错误的朋友,当我们忙于写代码的时候,不要只顾功能的实现,让“代码飞一会吧!",让我们换个思路。

    言归正传,还是务实点吧!

    <一>使用服务端控件响应服务端事件

    功能描述:禁止用户输入数字(0-99)以外的字符。当用户输入完毕,之后会触发该验证事件。

     前台

                <tr class = "style1">
    <td>
    服务端控件响应服务端事件
    <asp:TextBox ID="txtName" runat="server" AutoPostBack="True" OnTextChanged="txtName_TextChanged"></asp:TextBox>
    </td>
    </tr>

    后台代码:

            /// <summary>
    /// 在WEB中使用这个事件 必须修改TextBox属性的AutoPostBack = True
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void txtName_TextChanged(object sender, EventArgs e)
    {
    re = new Regex("\\d{1,2}");
    if (!re.IsMatch(txtName.Text.Trim()))
    {
    Response.Write("<script>alert('0-99!')</script>");
    txtName.Focus();
    }
    }

    实现效果截图:

    输入完字符之后,触发TextChanged事件。

    <二>客户端表单响应客户端事件(姑且这样称呼吧)

    功能描述:

    禁止用户从键盘输入非法字符。这里限制用户只能敲击数字键。

    前台

               <tr class = "style1">
    <td>
    客户端表单响应客户端事件
    <input onkeydown="onlyNum()" />
    </td>
    </tr>

    js Code:

    function onlyNum() {
    if (!((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)))//考虑小键盘上的数字键
    {
    event.returnvalue = false;
    alert('必须输入数字!');
    }
    else {
    //alert('必须输入数字!');
    }
    }

    实现效果

    用户只要敲击到数字键意外的键均会出发事件。

    <三>服务端控件响应客户端事件

    功能描述:与<二>同

    前台

                <tr>
    <td>
    服务端控件响应客户端事件
    <asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
    </td>
    </tr>

    js Code:

    function onlyNum() {
    if (!((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)))//考虑小键盘上的数字键
    {
    event.returnvalue = false;
    alert('必须输入数字!');
    }
    else {
    //alert('必须输入数字!');
    }

    后台:

                if (!IsPostBack)
    {
    txtAge.Attributes.Add("onkeydown", "onlyNum()");
    }

    总体效果和源码

    源码下载:Regular.rar

    .NET在后台已经为我们提供了一些服务端验证控件,但是他们存在很大缺点,对事件的响应总是在要刷新页面。而且不及时性,使得用户友好性极差。

    我也看到过完全用C#实现验证的,也就是说,所有东西都放到了服务端,个人不是很赞成!而自己也有意无意的在这样做。
    以上仅仅是起个抛砖引玉的作用,个人能力有限,还希望大家多多指教! 

  • 相关阅读:
    闽江学院2015-2016学年下学期《软件测试》课程-第五次博客作业
    在Swift中应用Grand Central Dispatch(下)
    在Swift中应用Grand Central Dispatch(上)转载自的goldenfiredo001的博客
    Asp.net mvc 框架揭秘之Asp.net +Mvc简介
    JavaScript数组
    网页校验
    删除弹出提示框_MVC
    业务体会
    判断数组值是否有重复
    sql
  • 原文地址:https://www.cnblogs.com/lucky_hu/p/2319411.html
Copyright © 2011-2022 走看看