1jQuery表單事件之blur與focus事件
在input元素上綁定keydown事件會發現一個問題:
每次獲取的內容都是之前輸入的,當前輸入的獲取不到
keydown事件觸發在文字還沒敲進文本框,這時如果在keydown事件中輸出文本框中的文本,得到的是觸發鍵盤事件前的文本,而keyup事件觸發時整個鍵盤事件的操作已經完成,獲得的是觸發鍵盤事件后的文本
當瀏覽器捕獲鍵盤輸入時,還提供了一個keypress的響應,這個跟keydown是非常相似,這里使用請參考keydown這一節,具體說說不同點
keypress事件與keydown和keyup的主要區別
- 只能捕獲單個字符,不能捕獲組合鍵
- 無法響應系統功能鍵(如delete,backspace)
- 不區分小鍵盤和主鍵盤的數字字符
總而言之,
KeyPress主要用來接收字母、數字等ANSI字符,而 KeyDown 和 KeyUP 事件過程可以處理任何不被 KeyPress 識別的擊鍵。諸如:功能鍵(F1-F12)、編輯鍵、定位鍵以及任何這些鍵和鍵盤換檔鍵的組合等。
2jQuery表單事件之change事件
<input>元素,<textarea>和<select>元素的值都是可以發生改變的,開發者可以通過change事件去監聽這些改變的動作
input元素
監聽value值的變化,當有改變時,失去焦點后觸發change事件。對於單選按鈕和復選框,當用戶用鼠標做出選擇時,該事件立即觸發。
select元素
對於下拉選擇框,當用戶用鼠標作出選擇時,該事件立即觸發
textarea元素
多行文本輸入框,當有改變時,失去焦點后觸發change事件
change事件很簡單,無非就是注意下觸發的先后行為
3jQuery表單事件之select事件
當 textarea 或文本類型的 input 元素中的文本被選擇時,會發生 select 事件。
這個函數會調用執行綁定到select事件的所有函數,包括瀏覽器的默認行為。可以通過在某個綁定的函數中返回false來防止觸發瀏覽器的默認行為。
select事件只能用於<input>元素與<textarea>元素
使用上非常簡單:
方法一:.select()
觸發元素的select事件:
$("input").select();
方法二:$ele.select( handler(eventObject) )
綁定$ele元素,每次$ele元素觸發點擊操作會執行回調 handler函數
這樣可以針對事件的反饋做很多操作了
<input id="test" value="文字選中"></input> $("#test").select(function() { //響應文字選中回調 //this指向 input元素 });
方法三:$ele.select( [eventData ], handler(eventObject) )
使用與方法二一致,不過可以接受一個數據參數,這樣的處理是為了解決不同作用域下數據傳遞的問題
<input id="test" value="文字選中"></input> $("#test").select(11111,function(e) {//響應文字選中回調 //this指向 div元素 //e.date => 11111 傳遞數據 });
4jQuery表單事件之submit事件
提交表單是一個最常見的業務需求,比如用戶注冊,一些信息的輸入都是需要表單的提交。同樣的有時候開發者需要在表單提交的時候過濾一些的數據、做一些必要的操作(例如:驗證表單輸入的正確性,如果錯誤就阻止提交,從新輸入)此時可以通過submit事件,監聽下提交表單的這個動作
使用上非常簡單,與基本事件參數處理保持一致
方法一:$ele.submit()
綁定$ele元素,不帶任何參數一般是用來指定觸發一個事件,用的比較少
<div id="test">點擊觸發<div>
$("ele").submit(function(){
alert('觸發指定事件')
})
$("#text").click(function(){
$("ele").submit() //指定觸發事件
});
方法二:$ele.submit( handler(eventObject) )
綁定$ele元素,每次$ele元素觸發點擊操作會執行回調 handler函數
這樣可以針對事件的反饋做很多操作了
<form id="target" action="destination.html"> <input type="submit" value="Go" /> </form> $("#target").submit(function() { //綁定提交表單觸發 //this指向 from元素 });
方法三:$ele.submit( [eventData ], handler(eventObject) )
使用與方法二一致,不過可以接受一個數據參數,這樣的處理是為了解決不同作用域下數據傳遞的問題
<form id="target" action="destination.html"> <input type="submit" value="Go" /> </form> $("#target").submit(11111,function(data) { //綁定提交表單觸發 //data => 1111 //傳遞的data數據 });
通過在<form>元素上綁定submit事件,開發者可以監聽到用戶的提交表單的的行為
具體能觸發submit事件的行為:
- <input type="submit">
- <input type="image">
- <button type="submit">
- 當某些表單元素獲取焦點時,敲擊Enter(回車鍵)
上述這些操作下,都可以截獲submit事件。
這里需要特別注意:
form元素是有默認提交表單的行為,如果通過submit處理的話,需要禁止瀏覽器的這個默認行為 傳統的方式是調用事件對象 e.preventDefault() 來處理, jQuery中可以直接在函數中最后結尾return false即可
jQuery處理如下:
$("#target").submit(function(data) { return false; //阻止默認行為,提交表單 });