2015-07-02 58 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