停止换行提交表单?

时间:2011-04-04 12:46:26

标签: javascript html forms browser

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

~100.0101~\n

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

不幸的是,这与表单不能很好地交互:如果用户在扫描时专注于表单输入,则表单会在侦听器启动之前提交并回发,因为表单需要\n意思是'提交'。

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

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

非常感谢!

2 个答案:

答案 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>