按下输入键时无法阻止输入提交
Unable to prevent an input from submitting when press the enter key on it
我从输入中得到了意外的行为。我有以下代码:
<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
,因为 Enter 键的默认行为是在按键按下时捕获的,因此您必须在它开始执行默认操作时阻止它。
这是一个工作示例:
<!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
以了解哪个事件可以阻止页面提交
我从输入中得到了意外的行为。我有以下代码:
<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
,因为 Enter 键的默认行为是在按键按下时捕获的,因此您必须在它开始执行默认操作时阻止它。
这是一个工作示例:
<!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
以了解哪个事件可以阻止页面提交