如何在event.preventDefault()之后提交表单

How to submit form after event.preventDefault();?

本文关键字:之后 提交 表单 preventDefault event      更新时间:2023-09-26

我使用javascript在加载特定页面时添加此功能。

document.getElementById('commit').addEventListener("click", validateSubmit,
                      false);

这个validatessubmit方法有一些代码来验证表单数据和它会这样做

      function validateSubmit(){
           //some code
           window.addEventListener('submit', newsubmit, true);
           HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
           HTMLFormElement.prototype.submit = newsubmit;
       }
       function newsubmit(event) {
           var target = event ? event.target : this;
           event.preventDefault();
           return false;
        }

所以第一次在提交表单时,通过点击它在这个方法中出现,它阻止表单值提交,在修复所有这些值后,当我再次尝试点击提交按钮时,它不起作用,在控制台上,我得到这个错误-

      "Uncaught TypeError: Cannot call method 'preventDefault' of undefined"

请帮帮我…

尝试从

更改函数声明
function newsubmit(event) {

var newsubmit = function(event) {

如果想将函数作为事件监听器的参数使用,则必须将其声明为变量。

我认为您不需要为了防止用户提交不完整的表单而经历这样的痛苦。试试这个:

<form name="form1" id="form1" onsubmit="return validateForm()" ....>
   <input type="text" id="txtName" />
</form>
function validateForm()
{
    //CHECK IF FORM FIELDS CONTAIN VALID VALUES?
    var formValid=....;//validation logic
    return formValid;
}

现在,如果在验证期间您发现任何错误,您将设置formValid变量为false,否则,如果所有输入正确,将formValid设置为true. When form will get false as return value from validateForm '函数将不提交

试试这个:

function validateSubmit(){
           window.addEventListener('submit', newsubmit, true);
           HTMLFormElement.prototype.submit = newsubmit;
           HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
       }
       function newsubmit(event) {
           var target = event ? event.target : this;
           event.preventDefault();
           return false;
        }