Thinking

          快樂編程,開心生活
          posts - 21, comments - 27, trackbacks - 0, articles - -5
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          CCP Review-Javascript

          Posted on 2007-11-27 23:41 lixw 閱讀(286) 評論(0)  編輯  收藏 所屬分類: Javascript
          CCP Review-Javascript
          1、對于div中的input標簽,如果div的style.display屬性為'none',那么調(diào)用input標簽的focus方法在IE6.0上會報錯,首先應(yīng)該讓其display屬性為''或者'block'再調(diào)用;
          2、當HTML元素的name屬性唯一時可以利用document.getElementById()調(diào)用獲得這個元素;
          3、如果異步提交耗時較長,可在異步提交之前顯示等待提示,在回調(diào)函數(shù)中根據(jù)返回值更新提示;
          4、在JS中function也是可以作為變量的,所以我們可以在自己封裝的框架中預(yù)留回調(diào)函數(shù)供自定義使用,如下面的代碼:
           1 //common.js
           2 var callback = null;
           3 function commonUse(){
           4   
           5   if(typeof(callback) == "function"){
           6     callback();
           7   }
           8   
           9 }
          10 
          11 //self.js
          12 function selfUse(){
          13   
          14   callback = function(){
          15     //do something before
          16   }
          17   commonUse();
          18   
          19 }

          5、JS中可以使用正則表達式來校驗數(shù)字域、日期域和EMail等。代碼示例如下:
          校驗日期的例子:
           1     function isDate(date){
           2         //對日期格式進行驗證 要求為2000-2099年  格式為 yyyy-mm-dd 并且可以正常轉(zhuǎn)換成正確的日期
           3         var regex=/^(19|20)\d{2}-((0[1-9]{1})|(1[0-2]{1}))-((0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))$/;
           4         
           5         if(!regex.test(date)){
           6             return false;
           7         }
           8         var arr_=date.split("-");
           9         var tmp = new Date(arr_[0], parseFloat(arr_[1])-1, parseFloat(arr_[2]));
          10         if(tmp.getFullYear()!=parseFloat(arr_[0]) 
          11             || tmp.getMonth()!=parseFloat(arr_[1])-1 
          12             || tmp.getDate()!=parseFloat(arr_[2])){
          13             return false;
          14         }
          15          
          16          return true;
          17     }
            這篇文章有詳細的說明:http://www.aygfsteel.com/byterat/archive/2006/12/20/89143.html
            這本電子書是講解正則表達式的:http://www.aygfsteel.com/Files/kawaii/RegularExpressions.zip 
          6、在JS編碼中,如果代碼量較大,要注意防止function名稱重復,包括直接在頁面上編寫的和引用外部JS文件的,不然會出現(xiàn)一些莫名奇妙的問題;
          7、注意JS代碼中的函數(shù)返回語句return的使用;
          8、盡量把JS代碼寫在外部公共的文件中,而在頁面中引入,好處有:a.函數(shù)復用;b.JS文件緩存;c.提供頁面解析速度?;赽,我們在修改JS代碼后,要看IE的設(shè)置是否將原先的JS文件緩存造成問題;
          9、對于同一個頁面的多個表單提交,我們可以在第一個表單中設(shè)置相應(yīng)的隱藏域,在表單提交之前利用JS腳本把其他表單的數(shù)據(jù)設(shè)置到第一個表單的隱藏域中;
          10、對于異步校驗的文本框,我們一般設(shè)置觸發(fā)事件為onblur而不是onchange或者onpropertychange,以減少客戶端和服務(wù)器的交互次數(shù),但應(yīng)該注意如果這個文本框最初沒有獲得焦點,那么onblur就不會觸發(fā),可以先調(diào)用以下onfocus,再調(diào)用onblur手動觸發(fā);
          11、JS中不存在trim()函數(shù),自定義如下:
           1 //JS去除首尾空格(同VBS的Trim)
           2     function trim(inputString) {   
           3         if (typeof inputString != "string") {
           4             return inputString; 
           5         }
           6         var retValue = inputString;
           7         var ch = retValue.substring(01);
           8         while (ch == " ") {
           9                //檢查字符串開始部分的空格
          10             retValue = retValue.substring(1, retValue.length);
          11             ch = retValue.substring(01);
          12         }
          13         ch = retValue.substring(retValue.length-1, retValue.length);
          14         while (ch == " ") {
          15             //檢查字符串結(jié)束部分的空格
          16             retValue = retValue.substring(0, retValue.length-1);
          17             ch = retValue.substring(retValue.length-1, retValue.length);
          18         }
          19         while (retValue.indexOf("  "!= -1) {
          20             //將文字中間多個相連的空格變?yōu)橐粋€空格
          21             retValue = retValue.substring(0, retValue.indexOf("  ")) 
          22                 + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
          23         }
          24         return retValue;
          25     }
          12、JS中顯示模式窗口,代碼如下:
           1 function showMyDialog(){
           2   var dialogProperty = 'dialogWidth:800px;dialogHeight:600px;status:no';
           3   var windowProperty = "height=800,width=800,status=no,toolbar=no,menubar=yes,location=yes,resizable=yes,scrollbars=yes";
           4 
           5   var url = "SomeAction.do?id="+id+"&flag=true";
           6   var returnVal = window.showModalDialog(url,"", dialogProperty);
           7   if(typeof(returnVal) == "undefined"){
           8     return;
           9   }
          10   if(returnVal !=  ""){
          11     //do something   
          12   }
          13 }
          14 
          在新打開的模式窗口中,我們通過window.returnValue設(shè)置返回值,然后在父頁面中我們通過returnVal可以拿到返回值。

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 堆龙德庆县| 衢州市| 拉孜县| 京山县| 海盐县| 辽宁省| 上林县| 府谷县| 宁陵县| 桦甸市| 龙陵县| 故城县| 青浦区| 双桥区| 观塘区| 安图县| 剑阁县| 塘沽区| 徐州市| 宜兴市| 大宁县| 青龙| 合水县| 清镇市| 弥勒县| 博爱县| 邻水| 克东县| 工布江达县| 大姚县| 衢州市| 古蔺县| 梅河口市| 黄龙县| 阜新市| 广东省| 庆阳市| 松桃| 卢湾区| 深圳市| 麻城市|