Javascript 覆盖表单 onsubmit 事件不起作用

标签 javascript forms dom-events

我正在重写这样的表单提交事件:

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/

相关文章:

javascript - 使用字符串切片在页面加载时显示值

javascript - != null 和 !== null 有什么区别?

ruby-on-rails - rails 4 : Force method: :post

javascript - 滚动触发器不适用于 forEach() 方法 - JavaScript

javascript - 使用 jQuery 获取特定行

javascript - Kendo 网格过滤器,带有自动完成文本框,其中包含 ASP.Net MVC 中的文本和值

Javascript 形式 NAN 错误

javascript - 删除必需的属性 google recaptcha v3

javascript - Onmouseover child div 问题和事件冒泡

javascript - meteor .js : How to set a div height dynamically via Javascript