I'm learning alpine.js and trying to capture the user input value. I have used "x-on:input" but its not calling the function
Below is the simple form input
 <input type="email" class="form-control" x-on:input.debounce="validateEmail($event)" x-model="userEmail" id="email" aria-describedby="emailHelp" placeholder="Enter email">
and this is the basic method in my index.js
function validateEmail(event){
console.log(userEmail);
}
The function is not getting called.
Adding a sample stackblitz
Please Guide
Thanks Shruti Nair
You're looking for x-on:change
<input type="email" class="form-control" x-on:change.debounce="validateEmail($event)" x-model="userEmail" id="email" aria-describedby="emailHelp" placeholder="Enter email">
You'll also want to make your function read the value from $event.target.value
Since you've already got an x-model, you could add $watch('userEmail', (val) => {}) to x-init and validate that way.
Edit: (based on the stackblitz)
x-data is missingFull component:
<form x-data="{
  userEmail: '',
  validateEmail(event) {
    console.log(event.target.value);
  },
  submit($event) {
    console.log(this.userEmail)
  }
}">
  <input type="email"  class="form-control"
    x-on:change.debounce="validateEmail($event)"
    x-model="userEmail"
    id="email"
    aria-describedby="emailHelp"
    placeholder="Enter email"/>
  <button type="button" x-on:click="submit" class="btn btn-block">
    Submit
  </button>
</form>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With