我有一个与形式有关的问题。我的网络应用程序监听条形码阅读器的扫描仪输入。条形码阅读器以以下格式显示为键盘输入:
~100.0101~\n
其中\n
是换行符。我使用带有正则表达式的全局javascript监听器 - 每当监听器'听到'与正则表达式匹配的输入时,我调用我的barcodeHandler()
函数。
不幸的是,这与表单不能很好地交互:如果用户在扫描时专注于表单输入,则表单会在侦听器启动之前提交并回发,因为表单需要\n
意思是'提交'。
我无法更改扫描仪输入,所以有什么办法可以在输入\n
时停止提交表单吗?
显然,我仍然希望我的表单能够使用Enter键,如果可能的话我宁愿不改变默认的表单行为!
非常感谢!答案 0 :(得分:9)
您需要捕获表单控件上的按键,并使用preventDefault()
或return false
阻止默认操作。
// do this for all <input> <textarea> and <select> elements on the page.
input.addEventListener("keypress", function(event){
if (event.which == '10' || event.which == '13') {
event.preventDefault();
}
}, false);
或使用jQuery:
$("input, textarea, select").keypress(function(event){
if (event.which == '10' || event.which == '13') {
event.preventDefault();
}
});
答案 1 :(得分:3)
覆盖表单的onsubmit,并在提交按钮上提供您自己的替代作为onclick处理程序。
<form action="submit.php" onsubmit="return false;">
Some input ...<input type="text"/>
<input type="button" value="Submit" onclick="parentNode.submit();">
</form>