隨筆-54  評論-0  文章-2  trackbacks-0
              AJAX實例

            今天是AJAXweb開 發中的典型應用,也是AJAX的最后一天課,老佟不愧是AJAX的行家,以至于每個班的AJAX都是他帶的,老佟講課風趣極了,課 堂總是不是傳來同學們笑聲。。。經過三天的js和昨天的AJAX的學習,今天終于可以體現一下無刷新的感覺。

          日期驗證

          1. 日期驗證的需求:

              1). birth 輸入框中的文字是 "請輸入您的生日" , 鼠標獲取焦點時, 文本框中的字符變為空格

              2). 當失去焦點時, 若文本框中的字符為空格, 使其值重新設為 "請輸入您的生日"

              3). 當失去焦點, 且文本框中的字符不是空格, 且其值發生變化時, 發送 Ajax 請求到服務器端驗證輸入的日期格式是否合法.

                 . 若不合法, 給出 "您輸入的日期不合法"

                 . 若合法, 給出 "您輸入的日期合法"

                

          2. Ajax 請求時提示信息  

          3.有等待的特效

           

          工程整體結構如圖:注:使用的是jQuery

           

          1.       新建input-date.jsp頁面,關鍵代 碼:

          2.        

          <script type="text/javascript"

          src="${pageContext.request.contextPath}/scripts/jquery-1.3.1.js"></script>

          <script type="text/javascript">

                 $(function(){

                        $("#birth").focus(function(){

                               var value = $.trim(this.value);

                               if(value == this.defaultValue){

                                      this.value = "";

                               }

                        }).blur(function(){

                               var value = $.trim(this.value);

                               if(value == ""){

                                      this.value = this.defaultValue;

                               }

                        }).change(function(){

                               var value = $.trim(this.value);

                               //再加一個需求:當文本框中的值發生變化, 且其 值不是默認值, 長度在 8 --10 之間, 此時會發送 Ajax 請求

                               if(value != this.defaultValue && value.length >= 8 && value.length <= 10){

                                      var url = "${pageContext.request.contextPath }/dateValidateServlet";

                                      var args = {time: new Date(), birth: value};

                                     

                                      $.post(url, args, function(data){

                                             $("#datemsg").html(data);

                                      });

                               }else{

                                      alert("日期不合法!");

                                      this.value = this.defaultValue;

                               }

                        });

                 });

          </script>

          </head>

          <body>

                 <h3>Ajax Validation Example</h3>

                 Birth date(yyyy-MM-dd): <input id="birth" type="text" name="birth" value="請輸 入您的生日" />

                 <br>

                 <div id="datemsg"></div>

          </body>

          2.新建DateValidateServlet,關鍵代碼:

              //1. 獲取 birth

                        String birth = request.getParameter("birth");

                       

                        //2. 驗證

                        Pattern p = Pattern.compile("^((""d{2}(([02468][048])|([13579][26]))[""-""-""s]?((((0?" +

                                      "[13578])|(1[02]))[""-""-""s]?((0?[1-9])|([1-2][0-9])|(3[01])))" +

                                      "|(((0?[469])|(11))[""-""-""s]?((0?[1-9])|([1-2][0-9])|(30)))|" +

                                      "(0?2[""-""-""s]?((0?[1-9])|([1-2][0-9])))))|(""d{2}(([02468][12" +

                                      "35679])|([13579][01345789]))[""-""-""s]?((((0?[13578])|(1[02]))" +

                                      "[""-""-""s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))" +

                                      "[""-""-""s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[""-""-""s]?((0?[" +

                                      "1-9])|(1[0-9])|(2[0-8]))))))");

                       

                        boolean flag = p.matcher(birth).matches();

                       

                        //3. 根據驗證結果返回字符串

                        response.setCharacterEncoding("UTF-8");

                        PrintWriter out = response.getWriter();

                        if(flag){

                               out.println("<font color='green'>日期格式合法</font>");

                        }else{

                               out.println("<font color='red'>日期格式不合法</font>");

                        }

                 }

          3.加上特效:

            1.新建文件夾commons,再建ajax.jsp,寫代碼:

          如下

             <script type="text/javascript" src="${pageContext.request.contextPath }/scripts/jquery.blockUI.js"></script>

          <script type="text/javascript">

             $().ajaxStart(function(){

                    $.blockUI({

                      message: $('img#loading'),

                      css: {

                          top:  ($(window).height() - 150) /2 + 'px',

                          left: ($(window).width() - 400) /2 + 'px',

                          border: 'none',

                          padding: '5px',

                          color: '#fff'

                      },

                        overlayCSS: { backgroundColor: '#fff' }

                  });

             }).ajaxStop($.unblockUI);

          </script>

          <img id="loading" alt=""

             src="${pageContext.request.contextPath }/images/loading.gif" style="display:none" />    

          注:代碼可參看jquery.blockUI的文檔

          2.input_date.jsp <head>標簽體中加上如下代碼:

          <%@ include file="/commons/ajax.jsp" %>

          3.接著導入jquery.blockUI.js文件

          4.最后,便可在tomcat下訪問:http://localhost:8080/ajax-1/input-date.jsp ,輸入合法日期,結果如圖

           

          明天是Hibernate的課程。老徐講的,老徐講 課之深入已早有所耳聞,且待明天之開始!

          posted on 2010-01-31 23:30 d66380022 閱讀(155) 評論(0)  編輯  收藏
          主站蜘蛛池模板: 郓城县| 榆树市| 溆浦县| 彰化县| 九寨沟县| 庐江县| 黑山县| 彭阳县| 余姚市| 红安县| 云安县| 西和县| 高雄市| 乌鲁木齐县| 奇台县| 清涧县| 九寨沟县| 轮台县| 延川县| 邵阳县| 镇赉县| 石家庄市| 印江| 晋江市| 奈曼旗| 南川市| 泰顺县| 绥德县| 安图县| 翁源县| 乌审旗| 仙居县| 汉源县| 景东| 汪清县| 太仆寺旗| 新昌县| 济南市| 株洲县| 兴仁县| 宜良县|