Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript-如何防止自动提交表单_Javascript_Html_Forms - Fatal编程技术网

javascript-如何防止自动提交表单

javascript-如何防止自动提交表单,javascript,html,forms,Javascript,Html,Forms,我面临的问题是,在我的网页上有一个接收条形码输入的文本字段,条形码由条形码阅读器设备写入该字段 现在发生的情况是,条形码阅读器在字段中写入条形码后,以某种方式自动提交表单。我想阻止这种屈服 我尝试使用preventDefault()执行此操作,但仍然没有成功。代码如下: <form role="form" method="post" action="IssueBook" id="issueBookForm"> <input type="text" value="" requir

我面临的问题是,在我的网页上有一个接收条形码输入的文本字段,条形码由条形码阅读器设备写入该字段

现在发生的情况是,条形码阅读器在字段中写入条形码后,以某种方式自动提交表单。我想阻止这种屈服

我尝试使用
preventDefault()
执行此操作,但仍然没有成功。代码如下:

<form role="form" method="post" action="IssueBook" id="issueBookForm">
<input type="text" value="" required name="empId" id="empId" 
                            onblur="getEmpData(this)" />
<input type="text" value="" required name="barcode" id="barcode" 
                            onblur="checkBookExistence(this); checkEligibilityForUser();" />
</form>

var issueBookForm = document.getElementById("issueBookForm");
            issueBookForm.addEventListener('submit',    function(event) {
                event.preventDefault();
            });
            document.getElementById("submitButton").addEventListener('click',function(event){
                var choice = confirm('Are you sure you want to issue this book ?? ');
                if(choice === true){
                    issueBookForm.submit();
                }
                else false;
            });

var issueBookForm=document.getElementById(“issueBookForm”);
issueBookForm.addEventListener('submit',函数(事件){
event.preventDefault();
});
document.getElementById(“submitButton”).addEventListener(“单击”),函数(事件){
var choice=confirm('您确定要发行这本书吗??);
如果(选项===true){
issueBookForm.submit();
}
否则错误;
});

注意:我只需要支持具有
addEventListener
的浏览器。我知道上面的内容在旧IE或兼容模式下的IE上不起作用,这很好。我正在用Chrome进行测试。

您可以使用onsubmit事件调用JavaScript,通过返回true和false来阻止提交。

好的,我在我的朋友的帮助下解决了问题,这可能不是最好的解决方案,但它可以工作:

var x, inputs = document.querySelectorAll("input[type='text']");
        for (x in inputs) {
            if (inputs[x] instanceof Element) {
                inputs[x].addEventListener('keyup', function(event) {
                    if (event.keyCode == 13)
                        return false;
                });
            }
        }

这有助于防止在任何文本字段上按enter键时表单提交,我做的另一件事是将输入类型从submit更改为button。

尝试返回false?你说过你正在Chrome上测试这个。如果您所引用的JavaScript是在
表单
元素创建之后运行的(例如,在
表单
之后的
脚本
块中,而不是在它之前),那么上述方法就行得通了。是的,这正是我所做的,代码在尾端。问题出在你所引用的以外。您必须使用Chrome内置的调试器来解决这个问题(当然,这始终是您的第一步)。唯一可能破坏它的是,如果HTML中有另一个元素具有
id=“issueBookForm”
(可能是复制粘贴错误)。当面对一个包含多个具有相同
id
的元素的文档时,浏览器通常会从
getElementById
返回具有
id
的第一个元素(不要求它们返回,但大多数情况下它们似乎是这样)。我通过使用prevent default(如代码所示)来执行相同的操作,这应该可以工作,对吧???我以前没试过,因为onsubmit是业内每个人都会使用的方式,也是onsubmit的专用方式。因此,如果你只想在用户按enter键时停止提交,那很简单,使用onsubmit功能,然后调用它,然后在sender和event对象中,很容易找到是按钮还是键