[英]trigger jquery key event only outside form element
是否可以僅在表單元素外部觸發鍵事件?
背景:我有一個代碼,可以在按下右鍵時加載下一頁。 但是,如果有人在表單元素中使用該鍵,我不想觸發該事件。
當前代碼:
$(document).keydown(function(e){
if (e.keyCode == 37) {
var url = $('a#left').attr("href");
if (url != '') { // require a URL
window.location = url; // redirect
}
return false;
}
if (e.keyCode == 39) {
var url = $('a#right').attr("href");
if (url != '') { // require a URL
window.location = url; // redirect
}
return false;
}
});
這是該概念的基本示例。 您只需將事件處理程序添加到文檔中,並檢查其目標對象是否沒有作為表單的父級。
HTML
<form>
Inside form
<input/>
</form>
Outside form
<input />
使用Javascript
$(document).keyup(function(event){
if($(event.target).parents("form").length == 0){
alert("here");
}
});
工作POC: http : //jsfiddle.net/48NYE/
此概念可以輕松應用於您提供的腳本。
修改腳本
$(document).keydown(function(e){
var outsideForm = $(e.target).parents("form").length == 0;
if (e.keyCode == 37 && outsideForm) {
var url = $('a#left').attr("href");
if (url != '') { // require a URL
window.location = url; // redirect
}
return false;
}
if (e.keyCode == 39 && outsideForm){
var url = $('a#right').attr("href");
if (url != '') { // require a URL
window.location = url; // redirect
}
return false;
}
});
如果您在表單之外還有其他字段,我希望這可能會很有用
document.onkeyup = function( ev ){
var key = ev.which || ev.keyCode ,
aID = { 37:"left", 39:"right" };
if( ! (/INPUT|TEXTAREA/i.test(ev.target)) && aID[key]) {
var url = document.getElementById( aID[key] ).getAttribute('href');
window.location = url;
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.