This Is A FineDay

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            93 隨筆 :: 0 文章 :: 69 評論 :: 0 Trackbacks

          ( 十一 ).Prototype 1.5 rc2) 使用指南之 form

          這一部分提供了很多與表單操作有關的功能,包括以下部分,當通過 $ 方法返回元素時,可以直接通過 $(element).method() 調用:

          Form 對象:提供了操作整個表單的一些方法
          Form.Element
          對象:提供了操作某個表單元素的方法
          TimedObserver
          類:周期性表單監視器,當表單元素值改變的時候執行一個回調函數,有 Form Element 兩種類型
          EventObserver
          類:利用事件來監視表單元素,當表單元素值改變的時候執行一個回調函數,有 Form Element 兩種類型

          Form 對象:

          reset(form) form.reset()
          serializeElements(elements)
          :將 elements 中的元素序列化,就是返回指定的所有元素的 queryString 的形式,便于在 xmlhttp 或其他地方使用

          serialize(form)
          :序列化整個表單
          getElements(form)
          :返回表單的所有可序列化元素
          getInputs(form, typeName, name)
          :返回所有符合 typeName name input 元素
          disable(form)
          :使整個表單處于不可用狀態
          enable(form)
          :是整個表單可用
          findFirstElement(form)
          :返回類型為 'input’, ’select’, 'textarea’ 的第一個可用的非隱藏元素
          focusFirstElement(form)
          :使 findFirstElement(form) 返回的元素得到焦點

          Form.Element 對象:

          focus(element) select(element) html 元素內置方法的封裝,除了返回元素本身
          serialize(element)
          :序列化指定的表單元素,返回 key=value 的形式,返回的 string 已經 encodeURIComponent
          getValue(element)
          :返回元素的值
          clear(element)
          :清除元素的值
          present(element)
          :判斷元素的值是否非空
          activate(element)
          :使元素獲得焦點
          disable(element)
          :使元素不可用
          enable(element)
          :是元素可用

          $F = Form.Element.getValue 方便使用

          Form.Element.Observer 以及 Form.Observer 類:

          周期性監視表單元素,如果表單或表單元素的值有改變時,執行執行一個回調函數,使用方式如下:

          var oser=new Form.Element.Observer(element, frequency, callback)
          or oser=new Form.Observer(form, frequency, callback)
          callback
          可以定義兩個參數 form/element 、 Form.serialize()/value

          Form.Element.EventObserver Form.EventObserver 類:

          這兩個類跟上面的差不多,只是不是周期性的監視,而是利用元素的 change click 事件來監視表單元素的變化,當發生變化時執行 callback ,參數跟上面一樣

          ?

          ( 十二 ).Prototype 1.5 rc2) 使用指南之 event.js

          在介紹 Prototype Event 對象前先介紹一下瀏覽器中的事件模型,瀏覽器中的事件主要有 HTML 事件、鼠標事件和鍵盤事件,前兩種事件比較好理解,這里主要解釋一下鍵盤事件以及它在 IE firefox 中的區別

          鍵盤事件包括 keydown 、 kepress keyup 三種,每次敲擊鍵盤都會 ( 依次? ) 觸發這三種事件,其中 keydown keyup 是比較低級的接近于硬件的事件,通俗的理解是這兩個事件可以捕獲到你敲擊了鍵盤中某個鍵;而 keypress 是相對于字符層面的較為高級點的事件,這個事件能夠捕捉到你鍵入了哪個字符。可以這樣理解,如果你敲擊了 A 鍵, keydown keyup 事件只是知道你敲擊了 A 鍵,它并不知道你敲的是大寫的 A( 你同時按下了 Shift ) 還是敲的是小寫 a ,它是以 " " 為單位,你敲入了大寫的 A ,它只是當成你敲下了 shift A 兩個鍵而已,但是 keypress 可以捕捉到你是敲入的大寫的 A 還是小寫的 a

          還要理解一個概念是鍵盤中的鍵分為字符 ( 可打印 ) 鍵和功能鍵 ( 不可打印 ) ,功能鍵包括 Backspace, Enter, Escape, the arrow keys, Page Up, Page Down, and F1 through F12

          下面說一下鍵盤事件的具體使用方法,

          鍵盤事件的 event 對象中包含一個 keyCode 屬性, IE 中只有這一個屬性,當為 keydown keyup 事件是, keycode 屬性表示你具體按下的鍵 ( 也稱為 virtual keycode) ,當捕捉的是 keypress 事件時 keyCode 屬性指的是你鍵入的字符 (character code)

          firefox 中情況有些不同, event 對象包含一個 keyCode 屬性和一個 charCode 屬性, keydown keyup 事件的時候, keyCode 表示的就是你具體按的鍵, charCode 0 ;當捕捉的是 keypress 事件時, keyCode 0 , charCode 指的是你按下的字符

          當捕捉的是 keypress 事件時, 當你按的是可打印字符時, keyCode 0 charCode 指的是你按下的字符的鍵值,當你按的是不可打印字符時, keyCode 為按下的鍵的鍵值, charCode 0

          注意:功能鍵不會觸發 keypress 事件,因為 keypress 對應的就是可打印的字符,但是有一點 IE FF 中的區別,你按下一個字符鍵的同時按下 alt 鍵,在 IE 中不觸發 keypress 事件,但是在 ff 中可觸發,我發現在 IE 中按下 ctrl 鍵的時候只有按下 q 鍵會觸發事件其他的要么不會觸發事件,要么被瀏覽器 IE 自身捕獲了,例如你按下 ctrl_A ,全選某個東西,你按 ctrl_S 保存文件,但是在 FF 中就 好多了,事件都是先傳遞到網頁,再向外傳遞

          鑒于 IE FF 中的區別,如果你比較懶的話,建議只使用 keydow keyup 事件,這兩種事件的使用在 IE FF 中基本上沒有區別,也不要捕獲 ctrl_A 等被瀏覽器定義為快捷鍵的事件

          鍵盤事件 event 對象還有三個其他的屬性 altKey, ctrlKey, and shiftKey 來判斷你按下一個鍵的時候是否按下了 alt 等鍵,這三個屬性使用比較簡單,三種事件都可以使用,也不存在 ie ff 的兼容性問題

          Prototype 中的 Event 中又如下屬性:

          ? KEY_BACKSPACE: 8,
          ? KEY_TAB:?????? 9,
          ? KEY_RETURN:?? 13,
          ? KEY_ESC:????? 27,
          ? KEY_LEFT:???? 37,
          ? KEY_UP:?????? 38,
          ? KEY_RIGHT:??? 39,
          ? KEY_DOWN:???? 40,
          ? KEY_DELETE:?? 46,
          ? KEY_HOME:???? 36,
          ? KEY_END:????? 35,
          ? KEY_PAGEUP:?? 33,
          ? KEY_PAGEDOWN: 34,

          以及下面的方法:

          element(event) :返回觸發事件的元素
          isLeftClick(event)
          :判斷是否按下的左鍵
          pointerX(event)
          :事件觸發時鼠標的橫坐標,對于非鼠標事件,在 ff 中沒有此信息,但在 ie 中有?
          pointerY(event)
          :事件觸發時鼠標所在位置的縱坐標
          stop(event)
          :阻止事件向上傳播和瀏覽器的默認處理方法
          findElement(event, tagName)
          :找到觸發事件的元素的所有祖先元素中的 tagName tagName 的一個元素
          observe(element, name, observer, useCapture)
          :注冊事件處理函數
          stopObserving(element, name, observer, useCapture)
          :撤銷注冊的事件

          posted on 2008-07-03 21:50 Peter Pan 閱讀(215) 評論(0)  編輯  收藏 所屬分類: JS
          主站蜘蛛池模板: 原平市| 敖汉旗| 海安县| 沂源县| 辽宁省| 邵武市| 镇巴县| 商南县| 临桂县| 错那县| 信阳市| 上虞市| 兰考县| 吴旗县| 钟祥市| 梧州市| 唐海县| 浪卡子县| 陕西省| 瑞金市| 怀化市| 锡林浩特市| 巢湖市| 南投市| 武义县| 郁南县| 金沙县| 乌兰县| 鞍山市| 诸暨市| 长汀县| 会同县| 沈丘县| 五莲县| 鄱阳县| 阿城市| 栾城县| 莎车县| 阳江市| 庐江县| 庆城县|