我想阻止enter键提交表单,我希望它作为TAB键,只是跳转到表单中的下一个字段或下一个元素。
这可能在HTML / JS中吗?
如果无法使输入按钮充当选项卡,是否有办法阻止提交表单并仅使用HTML上的按钮提交表单?
编辑:
当我要求另一个问题时,我已经收到了解决这个问题的方法!
here您可以找到解决方案。
答案 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键工作)
答案 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来提交表单。我可能是错的,但我相信这应该阻止按下提交表单的任何其他元素的输入。