HTML捕获输入键和Tab键

时间:2011-01-04 16:12:54

标签: javascript html

我想阻止enter键提交表单,我希望它作为TAB键,只是跳转到表单中的下一个字段或下一个元素。

这可能在HTML / JS中吗?

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

编辑:

当我要求另一个问题时,我已经收到了解决这个问题的方法!

here您可以找到解决方案。

4 个答案:

答案 0 :(得分:2)

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

假设您要这样做,因为提交按钮有一个click处理程序,您希望每个表单提交,您应该将该代码移动到一个单独的函数中并从表单的submit事件中调用它。

在jQuery中,它看起来像:

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

请参阅the docs

仅供参考,如果您正在尝试进行某些验证,则应查看validation plugin

答案 1 :(得分:1)

有可能使用一些jQuery解决这个问题 - 虽然我不知道如何模仿按键。

$(document).keyup(function(e) {
  if(e.keyCode == 13)
  {
    //Code to imitate keypress of Tab key
  }
});

编辑:制作一个快速的jsFiddle来“模仿”标签按下,这将按照你提到的那样转到下一个字段。 (这个基于在字段中按下的Enter键工作)

jsFiddle

答案 2 :(得分:1)

<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>

编辑:不要使用'eval'..谢谢蒂姆和安迪!

答案 3 :(得分:0)

离开我的头顶,为了阻止输入按钮提交表单,请不要使用提交按钮,而是使用<input type="button" ... onclick="submitForm();">来调用javascript来提交表单。我可能是错的,但我相信这应该阻止按下提交表单的任何其他元素的输入。