Javascript HTML捕获输入键和制表键

Javascript HTML捕获输入键和制表键,javascript,html,Javascript,Html,我想阻止enter键提交表单,我想让它充当一个TAB键,跳转到表单中的下一个字段或下一个元素 这在HTML/JS中可能吗 如果无法使“输入”按钮充当选项卡,是否有方法阻止提交表单,并使用HTML上的按钮仅提交表单 编辑: 当我要求解决另一个问题时,我收到了这个问题的解决方案 您可以找到解决方案。也许可以使用jQuery解决这个问题-尽管我不知道如何模仿按键 $(document).keyup(function(e) { if(e.keyCode == 13) { //Code t

我想阻止enter键提交表单,我想让它充当一个TAB键,跳转到表单中的下一个字段或下一个元素

这在HTML/JS中可能吗

如果无法使“输入”按钮充当选项卡,是否有方法阻止提交表单,并使用HTML上的按钮仅提交表单

编辑:

当我要求解决另一个问题时,我收到了这个问题的解决方案


您可以找到解决方案。

也许可以使用jQuery解决这个问题-尽管我不知道如何模仿按键

$(document).keyup(function(e) {
  if(e.keyCode == 13)
  {
    //Code to imitate keypress of Tab key
  }
});
编辑:快速创建一个JSFIDLE来“模仿”制表符按下,这将转到您提到的下一个字段。(此功能基于在字段中按Enter键工作)


也许可以用jQuery来解决这个问题——尽管我不知道如何模仿按键

$(document).keyup(function(e) {
  if(e.keyCode == 13)
  {
    //Code to imitate keypress of Tab key
  }
});
编辑:快速创建一个JSFIDLE来“模仿”制表符按下,这将转到您提到的下一个字段。(此功能基于在字段中按Enter键工作)


为了防止enter按钮提交表单,不要使用submit按钮,而是使用
调用javascript提交表单。我可能错了,但我相信这会阻止在提交表单的任何其他元素上按enter键

为了防止enter按钮提交表单,请不要使用submit按钮,而是使用
调用javascript提交表单。我可能错了,但我相信这会阻止在提交表单的任何其他元素上按enter键


<html>
<body>
<script>
function tmpFn(val){
    if(event.keyCode=='13'){
    if (val<4)
        document.forms["yourform"].elements["box" + (val+1)].focus();
    else
        document.yourform.submit();
    return false;
    }
    return true;
}
</script>
<body>
<form name="yourform" action="#">
<input type="text" name="box1" onkeypress="return tmpFn(1)"><br>
<input type="text" name="box2" onkeypress="return tmpFn(2)"><br>
<input type="text" name="box3" onkeypress="return tmpFn(3)"><br>
<input type="text" name="box4" onkeypress="return tmpFn(4)"><br>
<input type="submit" name="done" value="Submit">
</form>
</body>
</html>
功能tmpFn(val){ if(event.keyCode=='13'){ 如果(val

功能tmpFn(val){
if(event.keyCode=='13'){

如果(val出于可访问性/可用性的原因,您确实不应该阻止
Enter
键提交表单(假设浏览器无论如何都要这样做;IIRC,一些较旧的浏览器没有)

假设您希望执行此操作,因为提交按钮有一个
单击
处理程序,您希望在每次表单提交时执行该处理程序,那么您应该将该代码移动到一个单独的函数中,并从表单的
提交
事件中调用它

在jQuery中,它看起来像:

$('#myForm').submit(function(e) {
        if (!isValid()) {
            e.preventDefault();  // Could also be `return false;` but I prefer preventDefault.
        }
});


仅供参考,如果您试图进行一些验证,您应该查看。

出于可访问性/可用性的原因,您确实不应该阻止
Enter
键提交表单(假设浏览器无论如何都要这样做;IIRC,一些旧浏览器没有)

假设您希望执行此操作,因为提交按钮有一个
单击
处理程序,您希望在每次表单提交时执行该处理程序,那么您应该将该代码移动到一个单独的函数中,并从表单的
提交
事件中调用它

在jQuery中,它看起来像:

$('#myForm').submit(function(e) {
        if (!isValid()) {
            e.preventDefault();  // Could also be `return false;` but I prefer preventDefault.
        }
});


仅供参考,如果你想做一些验证,你应该看看。

我正在寻找替代方案-之前的建议有一些积极的评价,我认为可能。+1对某个有效的答案投反对票,来源于stackoverflow,但由于任何原因没有起到作用,这是有点苛刻的是不是完全没有根据,因为
事件
对象的
keyCode
属性在除IE之外的所有浏览器中都是只读的。不过我没有否决它。不要通过编辑来更改答案,或者追加或写一个新答案。很抱歉-还意外地单击了回滚,认为它会返回到以前的状态。我正在查找f或者替代方案——之前的建议有几次正面评价,我想可能是这样。+1对某个有效答案投反对票,来源于stackoverflow,但由于任何原因没有起作用,这有点苛刻。
事件
keyCode
属性使得对该建议投反对票并非完全没有根据>对象在除IE之外的所有浏览器中都是只读的。不过我没有否决它。不要通过编辑来更改答案,也不要附加或编写新答案。抱歉-还意外单击了回滚,认为它会返回到以前的状态。这是个好主意,mklauber。我正在寻找类似ASP的东西,但当时没有考虑到这一点全部…返回键没有单击“提交”按钮,它只是使用指定的
操作
URL提交表单。这意味着,即使您取消了“提交”按钮,当您按“返回”键时,表单仍将提交。@Andy E就是这样。如果未定义“提交”按钮,则“回车”键将不起任何作用。我相信这是一样的在HTML4中看到的行为,刚刚在HTML5规范中明确指出。@zzzBov:看起来我们都对半了:-)如果有提交按钮,请输入“点击”按钮。如果没有按钮,表单会自动提交。从您链接到的规范的同一部分,“如果表单没有提交按钮,那么隐式提交机制必须只从表单元素本身提交表单元素。”这是一个好主意,mklauber。我正在寻找类似ASP的东西,但没有想到这一点根本…返回键没有单击提交按钮,它只是使用指定的
操作
URL提交表单。这意味着即使您取消了提交按钮,当您按返回键时表单仍将提交。@Andy E就是这样。如果未定义提交按钮,则enter键将不起任何作用。我相信这就是s在HTML4中看到的ame行为,刚刚在HTML5规范中明确指出。@zzzBov:看起来我们都对半了:-)如果有提交按钮,请输入“单击”按钮。如果没有按钮,表单会自动提交。从链接到的规范的同一部分,“如果表单没有提交按钮,那么隐式提交机制必须只提交表单元素。”