2009-05-26 2 views
1

У меня есть веб-страница, где у меня есть 2 формы, когда я нажимаю клавишу ввода, я вызываю функцию javascript, чтобы заставить страницу загружать другую страницу. Мой код:Javascript: Block form submit on Enter Key press

function SearchUser() 
{ 
var text = document.getElementById("searchItem").value; 
text = text == "" ? -1 : text; 
var by = document.getElementById("listBy").value; 
var on=""; 
if(by==1) 
{ 
    on="USERNAME"; 
} 
else if(by==2) 
{ 
    on="FIRSTNAME"; 
} 
else if(by==3) 
{ 
    on="EMAIL_ID"; 
} 

gotoUrl="userlist.php?searchItem="+text+"&onSearch="+on; 
    alert(gotoUrl); 
window.navigate=gotoUrl; 

}

и

$(document).ready(function() 
{ 
$("#frmUserListSearch").keyup(function(event) 
{ 
    if(event.keyCode == 13) 
    { 
    SearchUser(); 
    } 
}); 

});

Но страница делает форму смиряться, когда функция SearchUSer будучи called.I я получаю правильный URL в alert.But страница не загружается в Брауэр

Любые идеи ???

Заранее спасибо

ответ

4
if (document.addEventListener) { 
    document.getElementById('strip').addEventListener('keypress',HandleKeyPress,false); 
} else { 
    document.getElementById('strip').onkeypress = HandleKeyPress; 
} 

function HandleKeyPress(e) { 
    switch (e.keyCode) { 
     case e.DOM_VK_ENTER: 
     if (e.preventDefault) 
      e.preventDefault(); 
    else e.returnValue = false; 
    } 
} 

EDIT из-за оригинальный вопрос редактирования:

все, что вам нужно:

$(document).ready(function() 
{ 
    $("#frmUserListSearch").keyup(function(event) 
     { 
      if(event.keyCode == 13) 
      {  
       SearchUser(); 
       if (e.preventDefault) 
        e.preventDefault(); 
       else e.returnValue = false; 
      } 
     }); 
}); 

отредактирован, чтобы отразить комментарий

+0

Нужно ли мне надуть код при загрузке страницы? – Shyju

2

Возвращение ложь часто делает трюк.

http://javascript.about.com/library/bldisdef.htm

+0

return false after window.navigate, i tried.Didnt work – Shyju

+0

Событие должно возвращать false. Поэтому я бы поставил его после SearchUser(); –

2

У меня есть две рекомендации. Во-первых, используйте событие keydown вместо keyup (он ловит «enter» перед подачей лучше). Во-вторых, в вашей функции SearchUser() используйте window.location вместо window.navigate для перехода на другую страницу.

$(document).ready(function() { 
    $("#frmUserListSearch").keydown(function(event) { 
    if(event.keyCode == 13){  
     SearchUser(); 
     return false; 
    } 
    }); 
}); 

ПРИМЕЧАНИЕ: Не забудьте удалить «предупреждение()» внутри функции SearchUser(), поскольку это приводит к тому, форму, чтобы отправить Прежде чем перейти на страницу.

+0

@ Шыджу - ты попробовал это? –

0

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

<html> 
    <head> 
     <script type="text/javascript"> 
      function donothing() {} 
     </script> 
    <body> 
     <form action='javascript:donothing()'> 
      ... 
     </form> 
    </body> 
    </html>