適用標籤:全部
觸發條件:單擊html
#html <div ng-controller="LearnCtrl"> <div ng-click="click()">click me</div> <button ng-click="click()">click me</button> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.click = function () { alert('click'); } });
適用標籤:全部
觸發條件:雙擊api
#html <div ng-controller="LearnCtrl"> <div ng-dblclick="dblclick()">click me</div> <button ng-dblclick="dblclick()">click me</button> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.dblclick = function () { alert('click'); } });
適用標籤:code
ahtm
inputseo
select事件
textareaip
觸發條件:失去焦點input
#html <div ng-controller="LearnCtrl"> <a href="" ng-blur="blur()">link</a> <input type="text" ng-blur="blur()"/> <textarea cols="30" rows="10" ng-blur="blur()"></textarea> <select ng-blur="blur()"> <option>----</option> <option>jacky</option> <option>rose</option> </select> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.blur = function () { alert('blur'); } });
適用標籤:io
aevent
input
select
textarea
觸發條件:獲取焦點
#html <div ng-controller="LearnCtrl"> <a href="" ng-focus="focus()">link</a> <input type="text" ng-focus="focus()"/> <textarea cols="30" rows="10" ng-focus="focus()"></textarea> <select ng-focus="focus()"> <option>----</option> <option>jacky</option> <option>rose</option> </select> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.focus= function () { alert('focus'); } });
適用標籤:input
觸發條件:model更新
輸入框的內容改變並不表明model的值更新。按個人理解,通常當兩個狀態互相切換時,model值會更新。兩個狀態我稱之爲合法狀態和不合法狀態。
不合法的狀態:輸入的內容不符合type類型,如email類型。輸入的內容不符合校驗條件,如ngMinlength。不合法的狀態下,model會被更新成undefined。
合法的狀態:輸入的內容是符合類型和校驗條件的。
#html <div ng-controller="LearnCtrl"> <input type="text" ng-model="text" ng-change="change()" ng-minlength="5"/> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { //$scope.text=''; $scope.change = function () { alert('change'); } });
初始化和不初始化text的條件下,change觸發是不同的哦,這裏涉及到model初始化和更新機制。
適用標籤:
a
input
select
textarea
官方api上說使用的標籤是這些,我沒明白a和select複製有啥子用。另外,我換個div實際上也能觸發copy事件。通常經常使用的就是input和textarea。
觸發條件:複製。鼠標右鍵複製和快捷鍵Ctrl+C都會觸發。
#html <div ng-controller="LearnCtrl"> <input type="text" ng-copy="copy()"/> <textarea cols="30" rows="10" ng-copy="copy()"></textarea> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.copy = function () { alert('copy'); } });
適用標籤:
a
input
select
textarea
觸發條件:剪切。鼠標右鍵剪切和快捷鍵Ctrl+X都會觸發。
#html <div ng-controller="LearnCtrl"> <input type="text" ng-cut="cut()"/> <textarea cols="30" rows="10" ng-cut="cut()"></textarea> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.cut = function () { alert('cut'); } });
適用標籤:
a
input
select
textarea
觸發條件:粘貼。鼠標右鍵粘貼和快捷鍵Ctrl+V都會觸發。
#html <div ng-controller="LearnCtrl"> <input type="text" ng-paste="paste()"/> <textarea cols="30" rows="10" ng-paste="paste()"></textarea> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.paste = function () { alert('paste'); } });
適用標籤:全部
我的感受仍是input和textarea比較經常使用
觸發條件:鍵盤按鍵按下
要把$event傳過去,通常都是要判斷按了哪一個按鍵的。
#html <div ng-controller="LearnCtrl"> <input type="text" ng-keydown="keydown($event)"/> <textarea cols="30" rows="10" ng-keydown="keydown($event)"></textarea> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.keydown = function ($event) { alert($event.keyCode); } });
適用標籤:全部
我的感受仍是input和textarea比較經常使用
觸發條件:鍵盤按鍵按下並鬆開
#html <div ng-controller="LearnCtrl"> <input type="text" ng-keyup="keyup($event)"/> <textarea cols="30" rows="10" ng-keyup="keyup($event)"></textarea> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.keyup = function ($event) { alert($event.keyCode); } });
適用標籤:全部
我的感受仍是input和textarea比較經常使用
觸發條件:鍵盤按鍵按下
#html <div ng-controller="LearnCtrl"> <input type="text" ng-keypress="keypress($event)"/> <textarea cols="30" rows="10" ng-keypress="keypress($event)"></textarea> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.keypress = function ($event) { alert($event.keyCode); } });
非字符鍵不會引起 KeyPress 事件,但非字符鍵卻能夠引起 KeyDown 和 KeyUp 事件。
KeyDown 和 KeyPress 事件在按下鍵時發生,KeyUp 事件在釋放鍵時發生。
KeyDown -> KeyPress -> KeyUp。若是按一個鍵好久才鬆開,發生的事件爲:KeyDown -> KeyPress -> KeyDown -> KeyPress -> KeyDown -> KeyPress -> ... -> KeyUp。
KeyDown觸發後,不必定觸發KeyUp,當KeyDown 按下後,拖動鼠標,那麼將不會觸發KeyUp事件。
KeyPress主要用來捕獲數字(注意:包括Shift+數字的符號)、字母(注意:包括大小寫)、小鍵盤等除了F1-十二、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜單鍵}、{開始鍵}和方向鍵外的ANSI字符。
KeyDown 和KeyUp 一般能夠捕獲鍵盤除了PrScrn全部按鍵(這裏不討論特殊鍵盤的特殊鍵)。
KeyPress 只能捕獲單個字符。
KeyDown 和KeyUp 能夠捕獲組合鍵。
KeyPress 能夠捕獲單個字符的大小寫。
KeyDown和KeyUp 對於單個字符捕獲的KeyValue 都是一個值,也就是不能判斷單個字符的大小寫。
KeyPress 不區分小鍵盤和主鍵盤的數字字符。
KeyDown 和KeyUp 區分小鍵盤和主鍵盤的數字字符。
其中PrScrn 按鍵KeyPress、KeyDown和KeyUp 都不能捕獲。
適用標籤:全部
觸發條件:鼠標按下,左右中間按下都會觸發
#html <div ng-controller="LearnCtrl"> <button ng-mousedown="mousedown($event)">button</button> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.mousedown = function ($event) { alert($event.which); } });
適用標籤:全部
觸發條件:鼠標按下彈起,左右中間按下彈起都會觸發
#html <div ng-controller="LearnCtrl"> <button ng-mouseup="mouseup($event)">button</button> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.mouseup = function ($event) { alert($event.which); } });
適用標籤:全部
觸發條件:鼠標進入
#html <div ng-controller="LearnCtrl"> <button ng-mouseenter="mouseenter()">button</button> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.mouseenter = function () { alert('mouseenter'); } });
適用標籤:全部
觸發條件:鼠標離開
#html <div ng-controller="LearnCtrl"> <button ng-mouseleave="mouseleave()">button</button> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.mouseleave = function () { alert('mouseleave'); } });
適用標籤:全部
觸發條件:鼠標移動
#html <div ng-controller="LearnCtrl"> <button ng-mousemove="mousemove()">button</button> </div> #script angular.module('learnModule', []) .controller('LearnCtrl', function ($scope) { $scope.mousemove = function () { alert('mousemove'); } });
適用標籤:全部
觸發條件:鼠標進入