代码之家  ›  专栏  ›  技术社区  ›  webHasan

JavaScript onsubmit preventDefault无条件工作

  •  0
  • webHasan  · 技术社区  · 9 年前

    如果我使用 e.preventDefault() 进入 onsubmit 它阻止表单提交。但如果我有条件地使用它,它就不起作用了。参见以下代码:

    var register = document.getElementById('registerForm');
    
    register.onsubmit = function(e){
      e.preventDefault(); //it is working
    }
    
    register.onsubmit = function(e){
      if(5==5){
        e.preventDefault(); // it is not working
      }
    }
    <form action="#" id="registerForm">
      <input type="text" id="username">
      <input type="submit" id="submitBtn">
    </form>
    3 回复  |  直到 7 年前
        1
  •  1
  •   Praveen Kumar Purushothaman    9 年前

    这段代码运行良好。但是,其他一些事件不允许它运行。也可能是一些控制台错误。但是,如果你想打破这种流动,你也可以这样做:

    register.onsubmit = function (e) {
      if (5 == 5) {
        return false;
      }
    }
    

    但请记住,在执行此操作后,上述代码将中断附加到特定事件的所有其他指令。

        2
  •  0
  •   kristyna    9 年前

    试试这个。我在NetteFramework中使用它,并且它工作正常。但你必须创建“假按钮”并隐藏真正的提交按钮。 HTML格式:

    <form method="post" id="registerForm">
        <input type="button" id="fakeSubmitButton" />
        <input type="submit" id="submit" style="visibility:hidden" />
    <form>
    

    JS文件: var register=document.getElementById('registerForm'); var fakBtn=document.getElementById('fakeSubmitBtn');

    fakeBtn.click(function(e) { //user clicks on the fake submit button
        if ( 5==5 ) {
            e.preventDefault();
        } else {
            register.submit(); //call submit on real submit button
        }
    });
    
        3
  •  0
  •   brute_force    9 年前

    如果您认为这些行中有些奇怪,为什么不添加断点进行调试? 或者将您怀疑的代码放在try-catch块中,看看是否调用了catch。

    因为5==5将始终为真,如果条件不起作用。