Javascript 为什么当我在文本框上按enter键时,我的表单正在提交?
HTML:Javascript 为什么当我在文本框上按enter键时,我的表单正在提交?,javascript,forms,Javascript,Forms,HTML: 取消keydown事件不会阻止表单的提交。您需要改用keypress或keyup。使用按键事件而不是使用keyup function prints_change_quantity(e, element) { var pid = element.id.replace('quantity_'); var code = (e.keyCode ? e.keyCode : e.which); if("blur" == e.type || ("keyup" == e.type &a
取消keydown事件不会阻止表单的提交。您需要改用keypress或keyup。使用按键事件而不是使用keyup
function prints_change_quantity(e, element)
{
var pid = element.id.replace('quantity_');
var code = (e.keyCode ? e.keyCode : e.which);
if("blur" == e.type || ("keyup" == e.type && code == 13))
{
e.preventDefault();
console.log(element.value);
}
return false;
}
函数句柄(e){
如果(如keyCode===13){
警报(“按回车键时按了回车键”);
}
返回false;
}
默认情况下,当您按enter键获取html表单时,会触发向下键
事件。无论何时将事件附加到onkeyUp
属性,表单都会执行enter键操作并提交表单,因为它没有任何效果,但是如果您明确指定onkeyDown
事件,则您的退货打印更改数量(事件,此)代码>被调用,因此表单不会被提交。更改html代码以调用JavaScript函数,如下所示:
<form action="#">
<input type="text" name="txt" onkeypress="handle" />
</form>
<script>
function handle(e){
if(e.keyCode === 13){
alert("Enter was pressed was presses");
}
return false;
}
</script>
希望这对您有所帮助。如果您想使用现有功能,但不希望表单提交,您可以使用jquery并阻止表单与现有功能一起提交
我在表单中添加了打印id,或者您可以使用名称选择器或其他选择器
或者,如果您希望能够在某个时候提交表单,您可以在表单上为keypress添加jquery处理程序,如果是return键,则取消它
$(document).ready(function(){
$("#prints").submit(function (e) {
e.preventDefault(); // this will prevent from submitting the form.
});
});
更新了答案并进行了解释
<form name="prints" method="post" action="">
<input type="text" name="quantity_914" id="quantity_914" value="1" style="width:20px;" onblur="prints_change_quantity(event, this);" onkeydown="return prints_change_quantity(event, this); return false;" />
</form>
$(document).ready(function(){
$("#prints").submit(function (e) {
e.preventDefault(); // this will prevent from submitting the form.
});
});
$('#prints').keypress(function(e){
if ( e.which == 13 ) e.preventDefault();
});