2015-07-02 37 views
0

我想按一個按鍵就會顯示一個提示框。完成了。但問題是我有一個文本框內的頁面,當我試圖在文本框內打字,然後警報框即將到來。用JS和jQuery實現按鍵

$(document).ready(function() { 
    $(document).keydown(function(e) { 
     if (e.key == "F8") { 
      alert('Right key pressed'); 
     } else { 
      alert("Error key pressed") 
     } 
     e.preventDefault(); 
    }) 
}); 

HTML:

<input type="text" /> 
+1

可能dublicate:http://stackoverflow.com/questions/2639956/jquery-how-to-select-all-elements-except-input-and-textarea-to-disable-keydow – Niddro

+4

看起來像令人難以置信的煩人的功能。 – Liam

回答

2

文本框是,它提高document的事件,您document所以這是好的行爲的元素。

你應該到文本框添加處理程序stop propagate事件document

$('input').keydown(function (e) { 
    e.stopPropagation(); 
} 
+0

是啊,請記住,雖然e.stopPropagation()是IE9及以上。 如果你打算支持IE8也許'e.stopPropagation = e.stopPropagation || function(){e.cancelBubble = true}' –

+0

@GeorgeNemes - jQuery爲你處理所有這些。 – nnnnnn

+0

是的,jQuery處理這個問題,他正在使用它。習慣的力量。我會留下評論香草JavaScript參考,也許它會幫助某人。謝謝 –

0

嘗試使用事件偵聽器,這樣做:

$(document).ready(function() { 
var keyListner = function (e) { 
    e.preventDefault(); 
    if (e.key == 'F8') { 
     console.log('Right key pressed'); 
    } else { 
     console.log('Error key pressed') 
    }; 
} 

// Set the event listener 
$(document).on('keyup', 'body', keyListner); 

// Disable it on focus 
$('input, textarea').focus(function() { 
    $(document).off('keyup', 'body', keyListner); 
}); 

// Enable it on blur 
$('input, textarea').blur(function() { 
    $(document).on('keyup', 'body', keyListner); 
}); 
});