隨筆-7  評論-24  文章-102  trackbacks-0

          1、跨瀏覽器兼容的事件處理
          2、選擇列表框
          3、單選按鈕和復選框
          4、測驗




          1、跨瀏覽器兼容的事件處理

          //可復用的事件處理函數
          function catchEvent(eventObj, event, eventHandler) {
            
          if (eventObj.addEventListener) {
              eventObj.addEventListener(event, eventHandler, 
          false);
            } 
          else if (eventObj.attachEvent) {
              event 
          = "on" + event;
              eventObj.attachEvent(event, eventHandler);
            }   
          }

          //可復用的事件取消函數
          function cancelEvent(event) {
            
          if (event.preventDefault) {
              event.preventDefault();
              event.stopPropagation();
            } 
          else {
              event.retrunValue 
          = false;
              event.cancelBubble 
          = true;
            }    
          }



          2、選擇列表框

          var opts = document.getElementById("someForm").selectOpts.options;
          for (var i=0; i<opts.length; i++) {
            
          if (opts[i].selected) {
              alert(opts[i].text 
          + " " + opts[i].value);
            }
          }

          a.動態添加一個新的選項:由于數組的索引值是從 0開始編號的,因此只要以數組的 length屬性作為索引值,就可以在數組的最后面添加一個新的數組元素。
          opts[opts.length] = new Option["Option Four", "Opt4"];

          b.刪除一個選項,只需將數組中該選項設置為 null,這樣操作將會重新安排數組,而不會導致編號不連續的現象。
          opts[2] = null;

          如果想刪除所有選項,那么只需將數組的 length設置為 0。
          opts.length = 0;


          自動選擇
          //catchEvent(document.getElementById("selectOpts"), "change", checkSelect);
          var theEvent = evnt ? evnt : window.event;

          var opts = document.getElementById("someForm").selectOpts.options;
          for (var i=0; i<opts.length; i++) {
            
          if (opts[i].selected) {
              
          switch (opts[i].value) {
                
          case "Opt1" : opts[i+1].selected = true;
                  
          break;
                
          case "Opt3" : opts[i+1].selected = true;
                  
          break;
                
          case "Opt5" : opts[i+1].selected = true;
                  
          break;
              }
            }
          }



          3、單選按鈕和復選框

          //單選按鈕訪問:
          var buttons = document.getElementById("radioGroup");
          for (var i=0; i<buttons.length; i++)
          {
            
          if (buttons[i].checked) {
              alert(buttons[i].value);
            }
          }


          //復選框選擇:
          var colorOpts = document.getElementById("someForm").getElementByTagName("input");

          //遍歷復選框中的每個 checkbox,檢查是否被選中
          var isChecked = false;
          for (var i=0; i<colorOpts.length; i++) {
            
          if ((colorOpts[i].type == "checkbox"&& (colorOpts[i].checked)) {
              ifChecked 
          = true;
              
          break;
            }
          }

          //沒有一個 checkbox被選中
          if (!isChecked) {
            alert(
          "no choose!");
            
          }



          4、測驗

          Q:如果表單數據不完整或無效,如何停止表單提交操作?
          A:
               如果你使用 DOM Level 0的事件,那么只要在事件句柄中返回 false值,并且在事件句柄腳本中取消表單提交操作即可。
               如果你使用 DOM Level 2模型,那么就將 event對象的 cancelBubble屬性設置為 true(針對 IE),并調用其 preventDefault方法(針對其他瀏覽器)。
          posted on 2010-05-29 15:50 黃小二 閱讀(323) 評論(0)  編輯  收藏 所屬分類: Ajax
          主站蜘蛛池模板: 乌兰县| 双鸭山市| 珠海市| 宝山区| 永济市| 永宁县| 莒南县| 鄂伦春自治旗| 桐柏县| 赫章县| 西乡县| 尚志市| 鲁山县| 崇州市| 峨边| 扶余县| 扬州市| 奈曼旗| 黄石市| 襄城县| 黎川县| 米易县| 广宁县| 江山市| 永和县| 宜兰县| 旬阳县| 洪雅县| 富顺县| 兴国县| 商都县| 云龙县| 漳平市| 玉溪市| 兴化市| 十堰市| 治多县| 正定县| 津市市| 纳雍县| 新竹市|