【发布时间】:2015-04-30 11:33:19
【问题描述】:
我正在重写这样的表单提交事件:
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();
}
}
【问题讨论】:
-
你也可以在你的html表单标签中尝试onClick="function_name"。
-
我现在可以在您编辑的代码中看到您正在通过 javascript 发布表单。因此 onsubmit 没有被调用。原因很简单,浏览器认为您正在通过代码提交表单,因此您在调用提交方法之前已经完成了预处理。因此,IMO,在您调用 f.submit() 语句之前,您应该在提交表单之前调用您想要执行的所有其他方法。
-
Manish,请参阅下面的解决方案。你走在正确的轨道上。谢谢你的帮助。 :-)
标签: javascript forms dom-events