本站電子書

您可以在這些電子書店找到本站電子書: Google Play 圖書iBooks StoreHyReadReadmooPubu
===>>>本站推出學習遊戲意見調查<<<===《如何自學程式設計》入選 Google Play 台灣地區2016年度最佳書籍

HTML DOM 快速導覽 - 元素的事件處理屬性 onkeypress

按鍵盤按鍵會引發 onKeyPress 事件,可由元素 (element) 的 onkeypress 屬性 (attribute) 設定相關事件處理的程式碼,通常會用在具有文字輸入的元素,例如 <textarea> 或 <input> 。



打鍵盤的的動作有二,按下按鍵為 onKeyDown 事件,釋放按鍵,也就是按完手指離開按鍵為 onKeyUp 事件,完全動作包括按下與釋放則為 onKeyPress 事件。


舉例如下
function run1() {
    var s = document.getElementById("show1");
    s.innerHTML = "Key down!";
}

function run2() {
    var s = document.getElementById("show1");
    s.innerHTML = "Key up!";
}

function run3(event) {
    var s = document.getElementById("show2");
    var c = String.fromCharCode(event.charCode);
    s.innerHTML += c;
}

/* 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:event022.js
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2011 年 8 月 */


onKeyPress 事件由 run3() 函數 (function) 進行處理,如果按下鍵盤按鍵,網頁會在 id 屬性為 show2 的元素中印出所按按鍵的字元
var s = document.getElementById("show2");
var c = String.fromCharCode(event.charCode);
s.innerHTML += c;


我們以下面的 HTML 文件載入
<!DOCTYPE html>
<html>
<head>
<title>HTML DOM DEMO</title>
<script src="event022.js" type="text/javascript"></script>
</head>
<body>
<textarea id="demo" onkeydown="run1();"
                    onkeyup="run2();"
                    onkeypress="run3(event);">
</textarea>
<div id="show1"></div>
<div id="show2"></div>
</body>
</html>

<!-- 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:event022.html
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2011 年 8 月 -->


其中的 <textarea> 元素設置 onkeypress 屬性,當按下鍵盤按鍵之後就會執行 run3()
<textarea id="demo" onkeydown="run1();"
                    onkeyup="run2();"
                    onkeypress="run3(event);">


瀏覽器 (broswer) 開啟網頁檔案,輸入 There is no spoon. 如下結果



中英文術語對照
元素element
屬性element
函數function
瀏覽器broswer


您可以繼續參考
HTML 元素的事件處理屬性


相關目錄
HTML DOM 快速導覽
JavaScript 教材
首頁


參考資料
https://developer.mozilla.org/en/DOM/element.onkeypress
http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#elements-in-the-dom

沒有留言: