-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathform_validation_controller.js
More file actions
35 lines (30 loc) · 966 Bytes
/
Copy pathform_validation_controller.js
File metadata and controls
35 lines (30 loc) · 966 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// app/javascript/controllers/form_validation_controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static targets = ["input"]
connect() {
this.inputTargets.forEach(input => {
input.addEventListener('input', this.validate.bind(this))
})
}
validate(event) {
const input = event.target
input.classList.remove('is-invalid', 'is-valid')
if (input.checkValidity()) {
input.classList.add('is-valid')
} else {
input.classList.add('is-invalid')
}
}
submit(event) {
const isValid = this.inputTargets.every(input => input.checkValidity())
if (!isValid) {
event.preventDefault()
this.inputTargets.forEach(input => {
if (!input.checkValidity()) {
input.classList.add('is-invalid')
}
})
}
}
}