我正在重写这样的表单提交事件:
form.onsubmit = function(event) {
event.preventDefault();
但是当我在一个单独的函数中像这样在表单上调用提交时:
form.submit();
没有调用 onsubmit 函数,并且像往常一样发布表单。
有什么想法吗?
编辑:
我也在这个表单中创建一个文件输入并立即调用它的点击事件。这会影响表单提交事件吗?:
if (fileInput && document.createEvent)
{
var evt = document.createEvent('MouseEvents');
evt.initEvent('click', true, false);
fileInput.dispatchEvent(evt);
}
编辑#2:
我在文件输入值更改后通过调用表单的提交函数提交表单:
function nameFileLabel(id)
{
var f = document.getElementById('fileForm' + id);
var l = document.getElementById("fileText_" + id);
var i = document.getElementById("fInputId" + id);
if (i.value != '')
{
l.innerHTML = i.value.replace('fakepath', '...');
var theUploadForm = document.getElementById('fileDiv_' + id);
theUploadForm.style.visibility = 'visible';
theUploadForm.style.display = 'block';
f.submit();
}
}
最佳答案
要防止表单发布,您的函数必须返回 false。
form.onsubmit = function(event) {
event.preventDefault();
return false;
}
关于Javascript 覆盖表单 onsubmit 事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29966619/