javascript - 停止换行提交表单?

标签 javascript html forms browser

我有一个稍微不寻常的与表单相关的问题。我的网络应用程序监听来自条形码阅读器的扫描仪输入。条形码阅读器以以下格式显示为键盘输入:

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

相关文章:

javascript - 带 JS 的 SVG map - 更改悬停时多个路径的状态

javascript - 像 document.write() 一样使用 getElementByID

javascript - 使用 new 运算符返回 javascript 函数返回奇数范围

html - 如何允许在 iOS 上上传 PDF 文件?

html - 背景附件不起作用

javascript - 在 Chrome 中 JavaScript 提交函数只能运行一次

javascript - 基于另一个键的值的条件类型

html - 当 div 内容改变并且 div 增长时 CSS3 转换

php - 文本文件中 PHP 输出中的新行

javascript - HTML 输入 : Require URL to end in specific filetype