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

动态分配onsubmit验证器

  •  0
  • sbrbot  · 技术社区  · 5 年前

    在我的表格中,我有以下内容

    <script>
    function validate(form)
    {
       if(form.xyz.value=='') return false;
       return true;
    }
    </script>
    
    <form onsubmit="return validate(this)">
      <input name="xyz">
      <input type="submit" value="submit">
    </form>
    

    由于某些原因,我必须动态地分配onsubmit侦听器。

    我可以定义

    document.forms[0].addEventListener('submit',validate);
    

    但如何动态实现 return validate(this)

    (我需要纯JavaScript,而不是jQuery)

    1 回复  |  直到 5 年前
        1
  •  1
  •   Quentin    5 年前

    传递给事件处理程序函数的第一个参数是 the Event object . 如果要传递不同的值,请创建一个新函数并显式传递它。

    function validateEventHandler(event) {
        return validate(this);
    }
    
    document.forms[0].addEventListener('submit',validateEventHandler);
    

    但我重写了 validate 所以它只是用来 this 而不是 form 争论。

        2
  •  0
  •   sbrbot    5 年前

    JavaScript code to stop form submission 我实现了 event.preventDeafault() 在字段为空时阻止提交的命令。

    <form>
      <input name="xyz">
      <input type="submit" value="submit">
    </form>
    
    <script>
    function validate(event)
    {
      if(document.forms[0].xyz.value=='')
      { 
        alert('Mandatory field!');
        event.preventDefault();
      }
    }
    document.forms[0].addEventListener('submit',validate);
    </script>