无法防止输入按Enter键时提交
问题描述:
我收到来自输入的意外行为。我有以下代码:无法防止输入按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();
}
});
但我不明白在控制台任何东西,所以我觉得前可捕获的事件执行请求。
我该怎么办?
谢谢。
答
试着改变你的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>
如果你想检查一下,尝试改变onkeydown
到onkeyup
知道哪些事件可以防止网页被提交
试了一下并没有什么变化。 – vjsp90
您是否尝试过在'if'块中插入'e.preventDefault();'部分,然后尝试将条件更改为'e.keyCode == 13'? – Vance
刚试过,也是一样的行为。出于某种原因,这段代码从不执行。也许请求被另一个元素抛出,但我找不到任何东西。 – vjsp90