2009-05-15 5 views
1

Я называю яваскрипта функцию из текстового поля с помощью OnKeyPress = «clickSearchButton()»Проблема с функцией KeyPress Javascript

Вот моя функция:

function clickSearchButton() 
{ 
    var code = e.keyCode || e.which; 
    var btnSearch = document.getElementById("TopSubBanner1_SearchSite1_btnSearchSite"); 
    if(code == 13); 
     {   
      btnSearch.click(); 
      return false; 
     } 
} 

Моя проблема заключается в том, что эта функция срабатывает, если пользователь нажимает кнопку ввода в любом текстовом поле, а не только тот, который вызывает функцию. Что мне не хватает?

EDIT: все еще работает неправильно. Поэтому я брошу свой HTML там, если это поможет.

<input name="TopSubBanner1:SearchSite1:txtSearch" type="text" id="TopSubBanner1_SearchSite1_txtSearch" OnKeyPress="clickSearchButton(this)" /><input type="submit" name="TopSubBanner1:SearchSite1:btnSearchSite" value="Search" id="TopSubBanner1_SearchSite1_btnSearchSite" /> 

Кроме того, это страница ASP.NET, если это имеет значение.

+1

Как вы подключаете функцию clickSearchButton к событию OnKeyPress? – RichieHindle

+0

Вы должны изменить название этого, чтобы не быть таким расплывчатым. По крайней мере, упоминайте событие нажатия клавиши. –

+1

Вы не должны передавать «это» своему обработчику. – James

ответ

6

Событие по умолчанию передается в качестве аргумента для вашей функции, но вы не захватывая его в качестве параметра. Если вы его запечатлеете, вышесказанное должно работать правильно.

function clickSearchButton(e) 
{ 
    e = e || window.event //for IE compliane (thanks J-P) 
    //etc 

или

function clickSearchButton() 
{ 
    var e = arguments[0]; 
    e = e || window.event; 

Также у вас есть дополнительные точки с запятой, как Кевин указал.

+1

Альтернативно 'arguments [0]'. – Gumbo

+0

Кроме того, вы захотите, чтобы он работал в IE. Таким образом, e = e || window.event; – James

4
function clickSearchButton(e) 
{ 
    var code; 

if(window.event) 
    code = e.keyCode; 
else 
    code = e.which; 

var btnSearch = document.getElementById("TopSubBanner1_SearchSite1_btnSearchSite"); 
    if(code == 13) 
     {   
      btnSearch.click(); 
      return false; 
     } 
} 

и ваш вызывающий метод должен быть:

onkeypress="clickSearchButton(event)" 
Смежные вопросы