zoukankan      html  css  js  c++  java
  • 今日工作心得:验证控件与button的onclientclick事件

    今天工作中发现由于在button上写了onclentclick事件“return checkFileType()”对上传的文件类型进行判断,导致页面中的验证控件并不执行。

    <script type="text/javascript" language="javascript">
        function checkFileType()
        {
          var Types="<%=UploadFileTypes%>";
          if($("#ASPxRoundPanel1_fuAccessory")[0].value=="")
          {
              return true;
          }
          if($("#ASPxRoundPanel1_fuAccessory")[0].value.lastIndexOf(".")!=-1)/*如果没有就会返回-1*/
          {
                var fileType=$("#ASPxRoundPanel1_fuAccessory")[0].value.substring($("#ASPxRoundPanel1_fuAccessory")[0].value.lastIndexOf(".")+1);
                var TypesArray=Types.split("|");
                for(var i =0;i<TypesArray.length;i++)
                {
                  if(TypesArray[i]==fileType)
                   {
                     return true;                
                   }
                  else
                   {
                      continue;
                    }
                 }
          }
          alert("该文件类型不允许上传!");
          return false;
        }
        </script>

    上网查到一个关于此问题的详细文章:

    http://www.cnblogs.com/jiahaipeng/archive/2008/12/16/1355543.html。按照上面的方法在html里面添加了js方法触发页面的验证行为。

    <script language="javascript" type="text/javascript">
         function CheckClientValidate(){     
           Page_ClientValidate();
           if (Page_IsValid){
               return true;
           }else{
               return false;
           }
         }
        </script>

    再为button增加客户端属性(这个属性可以写在onclientclick中)

    btnOK.Attributes.Add("onclick", "if(CheckClientValidate()){return checkFileType();}");

    页面正常执行,但是仍有几个问题不解,主要是关于 Page_ClientValidate()这句话和Page_IsValid的不理解。这根微软的验证控件工作原理有关,待查阅相关的文档。

    一篇博文写道:Page_ClientValidate(),本函数用于在包含微软验证控件的aspx页面中,根据用户输入操作是否合法,返回True或者False (出自http://blog.csdn.net/rmb147/archive/2008/08/27/2837098.aspx)。目前我只能臆断是不是就是Page_ClientValidate()执行后返回的值赋给了Page_IsValid。(基本功不深,实在脸红)

    还有一个收获就是sqlserver中的DateAdd(interval, number, date)
    函数适用方法:

    DateAdd函数 返回

      返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔。

      语法

      DateAdd(interval, number, date)

      DateAdd 函数语法中有下列命名参数:

      部分 描述

      interval 必要。字符串表达式,是所要加上去的时间间隔。

      number 必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。

      date 必要。Variant (Date) 或表示日期的文字,这一日期还加上了时间间隔。

      设置

      interval 参数具有以下设定值:

      设置 描述

      yyyy 年

      q 季

      m 月

      y 一年的日数

      d 日

      w 一周的日数

      ww 周

      hh 时

      n 分钟

      s 秒

      说明

      可以使用 DateAdd 函数对日期加上或减去指定的时间间隔。例如,可以用 DateAdd 来计算距今天为三十天的日期;或者计算距现在为 45 分钟的时间。

      为了对 date 加上“日”,可以使用“一年的日数” (“y”),“日” (”d”) 或“一周的日数” (”w”)。

      DateAdd 函数将不返回有效日期。在以下实例中将 1 月31 日加上一个月:

      DateAdd(m, 1, 31-Jan-95)

      上例中,DateAdd 返回 1995 年 2 月 28 日,而不是 1995 年 2 月 31 日。如果 date 是 1996 年 1 月 31 日,则由于 1996 年是闰年,返回值是 1996 年 2 月 29 日。

      如果计算的日期超前 100 年(减去的年度超过 date 中的年份),就会导致错误发生。

      如果 number 不是一个 Long 值,则在计算时取最接近的整数值来计算。

      注意 DateAdd 返回值的格式由 Control Panel设置决定,而不是由传递到date 参数的格式决定。

  • 相关阅读:
    「UVA12293」 Box Game
    「CF803C」 Maximal GCD
    「CF525D」Arthur and Walls
    「CF442C」 Artem and Array
    LeetCode lcci 16.03 交点
    LeetCode 1305 两棵二叉搜索树中的所有元素
    LeetCode 1040 移动石子直到连续 II
    LeetCode 664 奇怪的打印机
    iOS UIPageViewController系统方法崩溃修复
    LeetCode 334 递增的三元子序列
  • 原文地址:https://www.cnblogs.com/yuanyuan/p/1692415.html
Copyright © 2011-2022 走看看