2015-04-07 35 views
2

有沒有辦法檢測按鈕被按下的方式?檢測按鈕在javascript中的按下方式

  • 鼠標單擊鼠標//通過事件凸顯標籤
  • 然後回車鍵//按鍵事件
  • 觸摸(手機)//觸摸事件

有一個簡短的JavaScript方式檢測到這個?或者,我是否需要爲點擊,輸入和觸摸添加事件偵聽器?我想獲取表單提交的數據。謝謝

+0

你是什麼意思的「短的JavaScript方式」? – Data2000

+0

我猜不出爲什麼你需要它。什麼是目的? – lv0gun9

回答

0

根據我的經驗,'輸入'和'觸摸'也觸發'點擊'。

我認爲可以安全地添加一個事件監聽器來'點擊'來處理所有你需要的事件。

試一下:https://jsfiddle.net/wvv2v8r2/

<input type="submit" value="test click" /> 

$('input').click(function(){ 
    alert('clicked'); 
}); 
+0

我很震驚,進入觸發點擊!?!?我在閱讀你的答案後進行了測試。 +1 –

+0

他們都觸發點擊,但你不問如何檢測哪個是哪個? –

+0

@Whathaveyoutried是的我只是給了+1不正確的答案,因爲我學到了新的東西? –

0

點擊觸摸,你可以用的onclick 協助處理,但對於通過標籤突出然後回車鍵,你必須單獨的代碼

2

這怎麼可以辦理

通過標籤突出然後回車鍵//按鍵事件

$('a').click(function(e) { 
    console.log(e); 

    // Screen Positions returns 0 on enter 
    if(e.screenX == 0 && e.screenY == 0) { 
     alert('Enter'); 
    } 
    else if(e.type == "click") { 
     alert('click'); 
    } 
}); 

DEMO因爲休息,你會很容易發現。

+0

我只需要觸摸左側,但到目前爲止這是真棒!你能告訴我爲什麼Screen Positions在輸入時返回0嗎?它是原生的JavaScript行爲? –

+0

@Deadpool當元素被按下或點擊時,事件可能發生在該位置。所以它返回(0,0)就進入了。 –

0

全部mousedown,clickkey press事件將僅觸發click事件。不需要有三個不同的事件監聽器。

如果您有全部三個事件處理程序,那麼執行順序將有所不同。

對於keypress,首先keypress將點燃然後click

如果您有mousedown,那麼首先mousedown然後click將觸發。

document.querySelector("#button").addEventListener("click", function(event) { 
    console.log("click"); 
}, false); 

document.querySelector("#button").addEventListener("mousedown", function(event) { 
    console.log("mousedown"); 
}, false); 

document.querySelector("#button").addEventListener("keypress", function(event) { 
    var keyCode = event.keyCode || event.which; 
    if(keyCode===13) { 
    console.log("enter pressed"); 
    } 
}, false); 

DEMO

你會發現,演示,都指的是click事件的結束。

所以最好只是單擊事件本身。