I am working on a form validator class in 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>
I get a Cannot read property 'preventDefault' of undefined
error whose cause I have not been able to find.