JavaScript事件
一、預設事件
阻止預設事件,主流瀏覽器使用preventDefault()
,IE8及其以下,設定returnValue
屬性,false
取消預設事件,true
不取消預設事件。
document.onselectstart = function(e) {
e = e || window.event;
//取消預設行為
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue = false;
}
console.log('文字選中')
};
document.oncontextmenu = function(e){
e = e || window.event;
//取消預設行為
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue = false;
}
console.log('右鍵選單')
}
二、滾輪事件
- IE/Chrome使用
onmousewheel
,滾輪屬性event.wheelDelta
,向上為120,向下為-120。 - Firefox使用
DOMMouseScroll
,必須使用addEventListener()
新增,滾輪屬性event.detail
向上為-3,向下為3。
//滑鼠滾輪事件
function mousewheelEvent(ele,fn,boole){
//判斷是否為IE瀏覽器
if(ele.addEventListener){
//判斷是否為火狐瀏覽器
if(ele.onmousewheel === undefined){//火狐
ele.addEventListener('DOMMouseScroll',fn,boole);
}else{//谷歌
ele.addEventListener('mousewheel',fn,boole);
}
}else if(ele.attachEvent){//ie瀏覽器
ele.attachEvent('onmousewheel',function(){
fn.call(ele);
});
}
}
mousewheelEvent(document,function(){
console.log(this);
});
三、表單事件
- 獲取焦點事件,
onfocus
獲取焦點事件<input>
、<textarea>
以及<select>
<a/>
元素。
obj.focus() //給指定的元素設定焦點,主動觸發。
- 失去焦點事件,
onblur
失去焦點事件<input>
、<textarea>
以及<select>
<a/>
元素。
obj.blur() //取消指定元素的焦點,主動觸發。
-
onchange
內容改變觸發<input>
、<textarea>
以及<select>
元素。 -
onsubmit
提交事件,submit()
提交表單 。 -
onreset
重置事件,reset()
重置表單。
var oForm = document.querySelector('.user-reg'),
oUserName = oForm.querySelector('input[name=username]'),//使用css選擇器的方式獲取
oPassword = oForm.querySelector('input[name=psw]'),
oNum = oForm.querySelector('input[name=num]'),
oDes = oForm.querySelector('textarea'),
oLike = oForm.querySelector('select'),
oBtnBox = oForm.querySelector('.form-btn'),
oBtns = oBtnBox.querySelectorAll('button');
//監聽一個獲取焦點事件
oUserName.addEventListener('focus',function(){
console.log('獲取焦點');
//this.value 就是input控制元件輸入的值
if(this.value.length >= 10){
//主動失去焦點
}
});
oUserName.focus();//主動觸發
//失去焦點事件
oUserName.addEventListener('blur',function(){
console.log('失去焦點');
});
//監聽年齡的改變事件
oNum.addEventListener('change',function(){
//年齡必須是數字
if(parseInt(this.value)){
this.value = parseInt(this.value);
}else {
this.value = 0;
alert("請輸入整型");
}
//this.value = parseInt(this.value) || 0;
console.log('改變事件');
});
//提交事件
oForm.addEventListener('submit',function(e){
//取消預設行為
e.preventDefault();
console.log('提交了');
});
//重置事件
oForm.addEventListener('reset',function(e){
//取消預設行為
e.preventDefault();
console.log('重置表單')
});
四、鍵盤事件
- 不是所有元素都能夠接收鍵盤事件,能夠響應使用者輸入的元素,能夠接收焦點的元素就能夠接收鍵盤事件,
document
能夠響應。 -
keydown
:使用者在鍵盤上按下某按鍵時發生,一直按著某按鍵則會不斷觸發(opera瀏覽器除外)。 -
keypress
:使用者按下一個按鍵,併產生一個字元時發生(也就是不管類似shift、alt、ctrl之類的鍵,就是說使用者按了一個能在螢幕上輸出字元的按鍵keypress
事件才會觸發)。一直按著某按鍵則會不斷觸發。 -
keyup
:使用者釋放某一個按鍵時觸發。 -
event.keyCode
: 數字型別,鍵盤按鍵的值,鍵值。 -
ctrlKey
,shiftKey
,altKey
布林值,當一個事件發生的時候,如果ctrl || shift || alt 是按下的狀態,返回true,否則返回false。
//鍵盤按下
oDes.addEventListener('keydown',function(){
console.log('鍵盤按下');
console.log(e.keyCode);
});
//鍵盤輸入
oDes.addEventListener('keypress',function(){
console.log('鍵盤輸入')
});
//鍵盤釋放
document.addEventListener('keyup',function(e){
console.log('文件鍵盤松開');
});
五、事件委託
-
e.target
主流瀏覽器下,觸發事件最底的標籤節點,返回的即使一個標籤節點。 -
e.srcElement
IE瀏覽器下。
var index = null;
var oBox = document.querySelector('.box');
oBox.onclick = function(e) {
e = e || window.event;
//不存在就證明是ie
if(e.target === undefined){
e.target = e.srcElement;
}
//是li標籤節點就新增class類名
if(e.target.nodeName == 'LI'){
if(index != null){
index.className = '';
}
e.target.className="on";
index = e.target;
}else{
console.log('不是li標籤');
}
}
相關文章
- JavaScript 事件JavaScript事件
- JavaScript resize 事件JavaScript事件
- JavaScript mouseup 事件JavaScript事件
- JavaScript mouseover 事件JavaScript事件
- JavaScript mousedown 事件JavaScript事件
- JavaScript focus 事件JavaScript事件
- JavaScript reset 事件JavaScript事件
- JavaScript blur 事件JavaScript事件
- JavaScript invalid 事件JavaScript事件
- JavaScript input 事件JavaScript事件
- JavaScript keyup 事件JavaScript事件
- JavaScript 事件冒泡JavaScript事件
- JavaScript submit 事件JavaScriptMIT事件
- JavaScript change 事件JavaScript事件
- JavaScript mouseleave 事件JavaScript事件
- JavaScript mousemove 事件JavaScript事件
- JavaScript keypress 事件JavaScript事件
- JavaScript keydown 事件JavaScript事件
- JavaScript select 事件JavaScript事件
- JavaScript contextmenu 事件JavaScriptContext事件
- JavaScript dblclick 事件JavaScript事件
- JavaScript click 事件JavaScript事件
- JavaScript abort事件JavaScript事件
- JavaScript animationEnd 事件JavaScript事件
- JavaScript transitionEnd 事件JavaScript事件
- JavaScript dragstart 事件JavaScript事件
- JavaScript drag 事件JavaScript事件
- JavaScript dragend 事件JavaScript事件
- JavaScript dragenter 事件JavaScript事件
- JavaScript dragover 事件JavaScriptGo事件
- JavaScript dragleave 事件JavaScript事件
- JavaScript drop 事件JavaScript事件
- JavaScript storage 事件JavaScript事件
- JavaScript mouseenter 事件JavaScript事件
- JavaScript animationIteration 事件JavaScript事件
- JavaScript animationStart 事件JavaScript事件
- JavaScript事件模型JavaScript事件模型
- JavaScript mouseout 事件JavaScript事件