js監聽回車事件


標題通俗的說,也就是綁定當用戶按下回車鍵要執行的事件。

下面,入正題。

第一步,先編寫簡單的頁面代碼,這里我們只需要一個按鈕就足夠了。當然,還有按鈕事件。 <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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM