当前位置: 首页 > 知识库问答 >
问题:

是什么原因导致无法读取此表单验证器类中未定义的属性“预防默认”?[重复]

蒋芷阳
2023-03-14

我正在使用JavaScript编写一个表单验证程序类:

class FormValidator {
  constructor() {
    this.formToValidate = document.querySelector("form");
    this.submitButton = this.formToValidate.querySelector("input[type=submit]");
  }

  validateForm() {
    console.log('test');
  }

  submitForm(e) {
    e.preventDefault();
    this.validateForm();
  }

  init(e) {
    this.formToValidate.addEventListener('submit', this.submitForm(e));
  }
}

const formValidator = new FormValidator();
formValidator.init();
<form action="/" novalidate>
  <div class="form-group">
    <input type="text" name="name" class="form-control" placeholder="Your Name" value="" required />
  </div>
  <div class="form-group">
    <input type="text" name="email" class="form-control" placeholder="Your Email" value="" required />
  </div>
  <div class="form-group">
    <input type="text" name="phone" class="form-control" placeholder="Your Phone Number" value="" required />
  </div>
  <div class="form-group">
    <textarea name="message" class="form-control" placeholder="Your Message"></textarea>
  </div>
  <div class="form-group mb-0">
    <input type="submit" name="btnSubmit" class="btn btn-success btn-block" value="Send Message" />
  </div>
</form>

我得到一个未定义的错误的无法读取属性'preventDefault',其原因我无法找到。


共有2个答案

束福
2023-03-14

init函数中有一个未定义的参数e。只需使用:

init() {
        this.formToValidate.addEventListener('submit', this.submitForm);
      }
徐德海
2023-03-14

改变

init(e) {
    this.formToValidate.addEventListener('submit', this.submitForm(e));
}

init(e) {
    this.formToValidate.addEventListener('submit', () => this.submitForm(e));
}
 类似资料:
  • 我正在用onsenui和react列清单。但我不能从onchanged调用绑定。 我不明白。。。。有人能解决这个问题吗? 这是我的密码。我想从输入项调用handlechanged方法。但是,无法读取未定义的属性“bind”被引发。

  • 有人能告诉我我做错了什么吗? 慰问: (节点:11924)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。要在未处理的promise拒绝时终止节点进程,请使用CLI标志(请参阅https://nodejs.org/api/cli.html#cli_unhand

  • 我刚开始使用Javascript和Discord进行开发。js,并收到以下错误: TypeError:无法读取未定义的属性“fetch” 我正在尝试执行轮询命令。这是代码(我删除了所有其他内容,只是想让它退出频道): 我已经试着把它放在Main.js工作: 但是我想要正确的文件。这就是我在客户上面所做的。在(‘消息’等)上。 当然,我谷歌了一下,看了看留档,但没有帮助。 正如我所说,我是编程新手,

  • 为什么我得到这个错误不能读取未定义的触摸属性? 为什么它不能读取,但它可以读取 当我们使用

  • 问题内容: 我正在制作非常简单的react应用。但是,当我尝试通过onChange事件调用父(实际上是祖父母)组件的方法时,我一直在获取。 这是触发事件的组件/表单(因此,在绑定的父组件上调用方法…是的,因为我通过道具将其从父组件传递下来,所以在方法上使用了.bound(this)。) 这是我如何通过大多数父(祖父母)组件中的props传递该方法的方法。 这是我作为父项(方法所有者和方法调用程序之

  • 我正在测试发送电子邮件与流星js和nodemailer插件: 流星添加捷运:流星NodeEmailer 当页面加载时,我在导航器的控制台上看到错误:无法读取未定义的属性“创建运输”。 那么问题是什么呢? 代码如下: /////////////////////////////////////////// ///////////////