我有一个稍微不寻常的与表单相关的问题。我的网络应用程序监听来自条形码阅读器的扫描仪输入。条形码阅读器以以下格式显示为键盘输入:
~100.0101~\n
其中 \n
是换行符。我使用带有正则表达式的全局 javascript 监听器 - 每当监听器“听到”与正则表达式匹配的输入时,我都会调用我的 barcodeHandler()
函数。
不幸的是,这不能很好地与表单交互:如果用户在扫描时专注于表单输入,表单会在监听器启动之前提交并回传,因为表单采用 \n
表示“提交”。
我无法更改扫描仪输入,那么有什么方法可以在输入 \n
时停止提交表单?
显然,我仍然希望我的表单可以使用 Enter 键,并且如果可能我宁愿不更改默认表单行为!
非常感谢!
最佳答案
您需要捕获表单控件上的按键并使用 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();
}
});
关于javascript - 停止换行提交表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5538661/