2009-05-26 80 views
1

我有一個網頁,我有2個表單,當我點擊輸入鍵時,我打電話給javascript函數強制頁面加載另一個頁面。我的代碼是Javascript:Block form Enter on 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 2009-05-26 14:51:59

2

返回假通常會有訣竅。

​​3210

+0

在window.navigate之後返回false,我試過了。沒有工作 – Shyju 2009-05-26 14:48:34

+0

事件必須返回false。所以我會把它放在SearchUser()後面; – 2009-05-26 14:57:46

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

您可以通過使用表單的action屬性來完成此操作,而無需處理關鍵事件,並且您可以稍後需要javascript來對提交表單的控件執行操作。

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