2010-11-21 131 views
0

我正在使用此功能來處理輸入點擊搜索文本框,但它觸發頁面中的另一個按鈕,如何停止該按鈕被觸發並調用我的搜索()功能。如何在按下輸入時阻止按鈕被觸發

InputKeyPress(e) { 
    if (window.event) { 
     if (event.keyCode == 13) { 
      search(); 
     } 
    } else { 
     if (e) { 
      if (e.which == 13) { 
       search(); 
      } 
     } 
    } 
} 

回答

1

keyCode == 13情況下,需要防止keypress事件的默認操作。執行此操作的標準方法是在事件對象上調用preventDefault函數(如果它有一個;它不在早期版本的IE中)。舊的方法是從您的事件處理函數返回false。兩者都採用「腰帶和大括號」方式並沒有真正的危害。 :-)

您也可以縮短你的函數一點:

function InputKeyPress(e) { 
    var keyCode; 

    e = e || window.event; 
    keyCode = e.keyCode || e.which; 
    if (keyCode == 13) { 
     search(); 
     if (e.preventDefault) { 
      e.preventDefault(); 
     } 
     return false; 
    } 
} 
1

您需要添加「返回false」這樣的:

function InputKeyPress(e) { 
    if (!e) 
     e = window.event; 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == 13) { 
     search(); 
     return false; 
    } 

    return true; 
} 

而且還調用從文本框改變這個:

<input .... onkeypress="return InputKeyPress(event);" ...> 

意義不只是調用函數,而是「返回」它。

+0

Thanx親愛的你真的幫助:)我們正在啓動,並且這個錯誤令我瘋狂 – Miroo 2010-11-21 09:56:53

+1

@Miroo沒有問題,請標記其中一個(非常相同)的答案是正確的。 :) – 2010-11-21 10:43:47