標題通俗的說,也就是綁定當用戶按下回車鍵要執行的事件。
下面,入正題。
第一步,先編寫簡單的頁面代碼,這里我們只需要一個按鈕就足夠了。當然,還有按鈕事件。 <html>
<head>
<title>測試綁定enter</title>
<script type="text/javascript">
function b_onclick() { alert("你好!"); }
</script>
</head>
<body>
<input type="button" value="測試按鈕" id="test" onclick="b_onclick()" /> </body>
</html>
第二步,於b_onclick()函數加入如下js代碼:
function document.onkeydown()
{ //使用document.getElementById獲取到按鈕對象
var button = document.getElementById("test");
if(event.keyCode == 13)
{
button.click();
event.returnValue = false;
}
}
然后於IE中運行,你會發現,即使焦點不在按鈕上,當你按下回車,依然執行了按鈕的函數。稍微解釋一下代碼: event.keyCode == 13是判斷按下的是那一個間,13代表的是回車鍵。 button.click();執行按鈕事件。 event.returnValue = false;這個是為了防止瀏覽器捕捉到用戶按下回車鍵而進行其他操作。例如假如輸入框中,沒有這行代碼的話,在執行完按鈕事件后,其還會執行換行的動作。第三步,很多人都認為做完上面的工作已經完成了整個作業。其實不是的。你嘗試使用firefox瀏覽,就會發現,代碼並不會執行。顯然,這是因為firefox不支持event事件對象。為了做到跨瀏覽器,不得不將代碼進行優化。我們可以這個做:
首先,為boby添加一個onkeydown監控函數,如<body onkeydown="BindEnter(event)">。其次修改原來的綁定函數為:
function BindEnter(obj)
{ //使用document.getElementById獲取到按鈕對象
var button = document.getElementById('test');
if(obj.keyCode == 13)
{
button.click();
obj.returnValue = false;
}
} 為什么要將事件對象作為參數傳遞呢?這是為了避免進行瀏覽器判別,節省代碼。 OK,到這里已經基本完成了。完整代碼如下:
<html>
<head>
<title>測試綁定enter</title>
<script type="text/javascript"> function b_onclick() { alert("你好!"); } function BindEnter(obj) {
//使用document.getElementById獲取到按鈕對象
var button = document.getElementById('test');
if(obj.keyCode == 13)
{ button.click();
obj.returnValue = false;
}
}
</script>
</head>
<body onkeydown="BindEnter(event)">
<input type="button" value="測試按鈕" id="test" onclick="b_onclick()" /> </body> </html>