select2 and jquery validation not working properly

By default, the validation on a field is only triggered by these events (for a type="text" field)…

  • onfocusout, when the user leaves a field (validates just the field)

  • onkeyup, when the user is typing within a field (validates just the field)

  • onclick, when the user clicks the submit button (validates the whole form)

If you need to programmatically trigger validation after you programmatically change the value of a field, then you need to invoke the .valid() method on that field. It will effectively trigger validation similar as the events above.

$('#myField').valid();  // validates just field element with id="myField"

$('#myForm').valid();  // validates the whole form

So you’ll need to find a method within select2 that is fired whenever the value is changed and put .valid() inside of that. It looks like the change event is what you’ll need.

$("#vedit-filter").select2({
    // your options here
}).on('change', function() {
    $(this).valid();
});

Leave a Comment