更改表单提交(进入选项卡)
Change form submission (enter to tab)
我有一个真正的基本表单(下面的代码),带有一堆背板PhP。有一个扫描仪用于输入数据,但它不是在每个项目后面加标签,而是发送一个"输入"命令。
添加javascript以使回车改为制表符到下一个表单字段,并在最后一个表单域上提交它,这可行吗?我在网上找到了一些脚本,但我尝试过的都没有在Firefox/Chrome中工作过。
代码:
<html><head><title>Barcode Generation</title></head><body>
<fieldset style="width: 300px;">
<form action="generator.php" method="post">
Invoice Number:<input type="text" name="invoice" /><br />
Model Number:<input type="text" name="model" /><br />
Serial Number:<input type="text" name="serial" /><br />
<input type="hidden" name="reload" value="true" />
<input type="submit" />
</form><br /><a href=null>en espanol</a></fieldset>
</body></html>
是。
您需要为表单实现一个"onsubmit"处理程序,该处理程序检查[ENTER]键是否从"正确"字段按下(或表单是否已充分填写)。如果没有,处理程序应该只返回false(以防止提交)(只需要做下一位。)
然后,您需要为每个可以扫描的输入实现一个"onkeypress"处理程序,当您获得[ENTER]键时,调用.prventDefault()阻止提交表单,在下一个字段触发[TAB]"keypress()"事件.focus()。
更新:这对我有效:
<html>
<head>
<title>Barcode Generation</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function validate() {
return ((/'S+/.test($('input[name="invoice"]').val())) &&
(/'S+/.test($('input[name="model"]').val())) &&
(/'S+/.test($('input[name="serial"]').val())));
}
$().ready(function(){
$('#generator_form')
.submit(validate)
.find('input[type="text"]')
.keypress(function(evt) {
if (evt.which == 13) { // ENTER pressed
var next_elem;
if (evt.target.name == 'invoice') { next_elem = $('input[name="model"]'); }
else if (evt.target.name == 'model') { next_elem = $('input[name="serial"]'); }
else if (evt.target.name == 'serial') { return validate(); }
$(next_elem).focus();
return false;
} else { // some other key pressed
return true;
}
})
.end();
});
</script>
</head>
<body>
<fieldset style="width: 300px;">
<form id="generator_form" action="generator.php" method="post">
Invoice Number:<input type="text" name="invoice" /><br />
Model Number:<input type="text" name="model" /><br />
Serial Number:<input type="text" name="serial" /><br />
<input type="hidden" name="reload" value="true" />
<input type="submit" />
</form>
<br />
<a href=null>en espanol</a>
</fieldset>
</body>
</html>
更新:以在[ENTER]的"串行"字段中提交。
更新:以在所有情况下正确验证。
相关文章:
- Javascript表单提交打开新窗口选项卡,然后重定向父页面
- 将表单提交到新窗口/选项卡
- 主干表单提交按钮选项不起作用
- 将表单提交到新选项卡并关闭模态
- 更改表单提交(进入选项卡)
- jQuery-在新选项卡中打开链接表单提交
- 禁用表单提交时的回车键&改为将其更改为选项卡
- 当前选项卡将移动到页面刷新或表单提交后的第一个选项卡
- 按需加载选项卡和表单提交的最佳方法
- AJAX的替代方案async: false选项用于表单提交按钮单击事件处理程序
- AJAX jQuery表单提交发送两次POST &选项
- 在新选项卡或窗口显示表单提交的结果
- 从弹出窗口提交表单到新选项卡,然后关闭弹出窗口,防止表单提交
- 添加选定的选择选项,以jquery表单提交
- 表单提交后禁用jQuery选项卡
- 通过.submit表单提交多个选项卡内容
- 需要帮助-代码更改下拉选项表单-更改提交到URL链接
- IE9在表单提交上打开新选项卡(表单具有target属性,指向动态创建的iframe)
- PHP表单提交后,Jquery ajax请求在新选项卡上没有响应
- 停留在<李>表单提交后的选项卡