因此,基本上我需要做的是檢測空格鍵的keydown事件,並因此在我的JavaScript文件中執行基於它的一些邏輯。在單個keydown上觸發不需要的多個KeyDown事件
所以,你可以看到我的HTML,有一個按鈕「撰寫」點擊哪個消息容器顯示。
現在我需要實現Gmail功能,將收件人中的郵件ID轉換爲標籤,但在我的情況下,只要按下空格鍵,即可將有效的郵件ID轉換爲標籤,即字符串在空格之前將檢查有效的電子郵件ID。
所以我寫了收件人容器的on-click函數和空格鍵的keydown函數。
現在問題來了。第一次加載頁面時,它工作得很好。我單擊收件人框內,一旦我點擊空格鍵,「空格鍵被按下」就會打印在瀏覽器控制檯上,一次按下一個鍵。
現在,如果我通過單擊「關閉」按鈕隱藏此消息容器div,然後再次通過單擊「撰寫」按鈕顯示消息容器div,然後當我點擊收件人框時,它會觸發空格鍵的兩個keydown事件,即「空格鍵被按下」將被打印兩次。
因此,如果我再次關閉並重新打開該框並再次單擊,它將在空格鍵的每個keydown上打印「空格鍵被按下」三次。
那麼它是與事件或其他事物的綁定和解綁有關嗎?因爲我經歷了類似的鏈接,其中關鍵事件一次又一次得到綁定,但可以真正弄清楚如何通過單擊「關閉」按鈕來殺死事件。
這裏是HTML:
<!DOCTYPE html>
<html>
<head>
<title>ZMail</title>
<link rel="stylesheet" type="text/css" href="css/fonts.css" />
<link rel="stylesheet" type="text/css" href="css/main.css" />
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<div class="header">
<h2>ZMail</h2>
</div>
<div class="body-container">
<button type="button" class="compose-button" id="compose-button">Compose</button>
<div class="message-container" id="message-container">
<div class="compose-form-header">
<p> New Message </p>
<button type="button" class="close-button" id="close-button">x</button>
</div>
<form id="compose-form" method="POST" action="">
<div class="recipient-container" id="recipient-container">
<div class="to-box" id="to-box">
<p>To</p>
</div>
<div class="input-elements-container" id="input-elements-container">
<input type="text" id="recipient-box" name="recipients" placeholder="Recipients">
</div>
</div>
<input type="text" id="subject-box" name="subject" placeholder="Subject">
<textarea form="compose-form" id="message-text-box" name="message-text" ></textarea>
<div class="send-button-container">
<button type="submit" class="send-mail-button" id="send-mail-button">Send</button>
</div>
</form>
</div>
</div>
</body>
這裏是JS
var contacts = ['[email protected]']
$(document).on('ready', function(){
$("#message-container").hide();
$("#to-box").hide();
$("#compose-button").click(function (event) {
if($("#message-container").is(':hidden')){
$(function() {
$("#recipient-box").autocomplete({
source: contacts
});
});
$("#message-container").show();
}
});
$("#close-button").click(function (event) {
$("#message-container").hide();
$("#to-box").hide();
$("#recipient-box").val('');
$("#subject-box").val('');
$("#recipient-box").attr('placeholder', 'Recipients');
$("#subject-box").attr('placeholder', 'Subject');
});
$("#recipient-container").click(function (event) {
console.log("recipients clicked");
$("#to-box").show();
$("#recipient-box").attr('placeholder', '');
$(document).keydown(function(e) {
if (e.keyCode == 32) {
console.log("spacebar pressed!!");
}
});
});
$("#subject-box").click(function (event) {
$(this).attr('placeholder', '');
});
});
任何幫助將不勝感激。
Thanks @Bert。有效 –