Javascript 为什么当我在文本框上按enter键时,我的表单正在提交?

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

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 && 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();
});