2015-07-02 59 views
0

我收到來自輸入的意外行爲。我有以下代碼:無法防止輸入按Enter鍵時提交

<form id="search_form"> 
    <div id="search_container"> 
     <input type="text" id="search_text"> 
    </div> 
    <select onchange="search_field_on_change()" name="search_field"> 
     <option value="login" selected>Usuario</option> 
     <option value="su.name">Nombre</option> 
     <option value="surnames">Apellidos</option> 
     <option value="email">Correo</option> 
     <option value="role">Rol</option> 
     <option value="access">Acceso</option> 
     <option value="center">Centro</option> 
    </select> 
    <button type="button" onclick="search()">Buscar</button> 
    <span id="modify_user_message"></span> 
</form> 

當我按下輸入元件上的回車鍵,提交表單並執行以下請求:

GET home.php?search_field=login 

我想避免這種行爲。我這個嘗試過:

$('#search_text').keypress(function(e){ 
    console.log('Hello'); 
    e.preventDefault(); 
    if (e.which == 13){ 
     search(); 
    } 
}); 

但我不明白在控制檯任何東西,所以我覺得前可捕獲的事件執行請求。

我該怎麼辦?

謝謝。

回答

0

試着改變你的keypress事件​​,因爲回車鍵的默認行爲是對的keydown拍攝的,所以你必須防止它在它開始做它的默認操作點。

這裏的工作示例:

 <!DOCTYPE html> 
     <html> 
     <script> 
     function selecting_key(whatKey){ 
       if(whatKey.keyCode==13){ 
     whatKey.preventDefault(); 
     } 
     } 
     </script> 
    <body> 
    <form> 
    <input type="text" onkeydown='selecting_key(event);'> 
    </form> 
    </body> 
    </html> 

如果你想檢查一下,嘗試改變onkeydownonkeyup知道哪些事件可以防止網頁被提交

+0

試了一下並沒有什麼變化。 – vjsp90

+0

您是否嘗試過在'if'塊中插入'e.preventDefault();'部分,然後嘗試將條件更改爲'e.keyCode == 13'? – Vance

+0

剛試過,也是一樣的行爲。出於某種原因,這段代碼從不執行。也許請求被另一個元素拋出,但我找不到任何東西。 – vjsp90