停止换行提交表单?

AP2*_*257 5 html javascript browser forms

我有一个与形式有关的问题.我的网络应用程序监听条形码阅读器的扫描仪输入.条形码阅读器按以下格式显示为键盘输入:

~100.0101~\n
Run Code Online (Sandbox Code Playgroud)

\n换行符在哪里.我使用带有正则表达式的全局javascript监听器 - 每当监听器'听到'与正则表达式匹配的输入时,我调用我的barcodeHandler()函数.

不幸的是,这与表单没有很好的交互:如果用户在扫描时专注于表单输入,则表单会在听众启动之前提交并回发,因为表单的\n意思是"提交".

我无法更改扫描仪输入,所以有什么方法可以在\n输入时停止提交表单吗?

显然,我仍然希望我的表单能够使用Enter键,如果可能的话我宁愿不改变默认的表单行为!

非常感谢!

mcr*_*ley 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);
Run Code Online (Sandbox Code Playgroud)

或使用jQuery:

$("input, textarea, select").keypress(function(event){
    if (event.which == '10' || event.which == '13') {
        event.preventDefault();
    }
});
Run Code Online (Sandbox Code Playgroud)