focusin、focusout事件 與blur、focus事件均用於表單處理事件,它們之間的本質區別:是否支持冒泡處理javascript
實例:html
<div> <input type="text" /> </div>
其中input元素能夠觸發focus()事件java
div是input的父元素,當它包含的元素input觸發了focus事件時,它就產生了focusin()事件jquery
focus()在元素自己產生,focusin()在元素包含的元素中產生
blur與focusout也亦是如此瀏覽器
<input>元素,<textarea>和<select>元素的值都是能夠發生改變的,開發者能夠經過change事件去監聽這些改變的動做函數
監聽value值的變化,當有改變時,失去焦點後觸發change事件。對於單選按鈕和複選框,當用戶用鼠標作出選擇時,該事件當即觸發ui
對於下拉選擇框,當用戶用鼠標做出選擇時,該事件當即觸發this
多行文本輸入框,當有改變時,失去焦點後觸發change事件code
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> .left div, .right div { width: 100%; padding: 5px; margin: 5px; float: left; border: 1px solid #ccc; } .left div { background: #bbffaa; } .right div { background: yellow; } </style> <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>input、textarea與select</h2> <div class="left"> <div class="aaron">input: <input class="target1" type="text" value="監聽input的改變" /> </div> <div class="aaron1">select: <select class="target2"> <option value="option1" selected="selected">Option 1</option> <option value="option2">Option 2</option> </select> </div> <div class="aaron3">textarea: <textarea class="target2" rows="3" cols="20">多行的文本輸入控件</textarea> </div> </div> 輸出結果: <div id="result"></div> <script type="text/javascript"> //監聽input值的改變 $('.target1').change(function(e) { $("#result").html(e.target.value) }); //監聽select: $(".target2").change(function(e) { $("#result").html(e.target.value) }) //監聽textarea: $(".target3").change(function(e) { $("#result").html(e.target.value) }) </script> </body> </html>
當 textarea 或文本類型的 input 元素中的文本被選擇時,會發生 select 事件orm
這個函數會調用執行綁定到select事件的全部函數,包括瀏覽器的默認行爲。能夠經過在某個綁定的函數中返回false來防止觸發瀏覽器的默認行爲
select事件只能用於<input>元素與<textarea>元素
方法一:.select()
觸發元素的select事件:
$("input").select();
方法二:$ele.select( handler(eventObject) )
綁定$ele元素,每次$ele元素觸發點擊操做會執行回調 handler函數,這樣能夠針對事件的反饋作不少操做
<input id="text" value="文字選中"></input> $("#text").select(function() { //響應文字選中回調 //this指向 input元素 });
方法三:$ele.select( [eventData ], handler(eventObject) )
使用與方法二一致,不過能夠接受一個數據參數,這樣的處理是爲了解決不一樣做用域下數據傳遞的問題
<input id="text" value="文字選中"></input> $("#text").select(11111,function(e) {//響應文字選中回調 //this指向 div元素 //e.data => 11111 傳遞數據 });
提交表單是一個最多見的業務需求,好比用戶註冊,一些信息的輸入都是須要表單的提交。一樣的有時候開發者須要在表單提交的時候過濾一些的數據、作一些必要的操做(例如:驗證表單輸入的正確性,若是錯誤就阻止提交,重新輸入)此時能夠經過submit事件,監聽下提交表單的這個動做
方法一:$ele.submit()
綁定$ele元素,不帶任何參數通常是用來指定觸發一個事件,用的比較少
<div id="text">點擊觸發<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事件的行爲:
上述這些操做下,均可以截獲submit事件
特別注意:
jQuery處理
$("#target").submit(function(data) { return false; //阻止默認行爲,提交表單 });