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对象中,很容易找到是按钮还是键