Trying to use validation on select2 with a few issues :
the error message will show, but it will not remove when a valid entry is entered.
I
I was facing the same issue. You can try the below code to make it work. Select 2 add style display: none to the select. That's the reason form validation doesn't work as it's hidden. To override the validation and allow them to validate the hidden fields too.
$(document).ready(function () {
//Validate form mainly SELECT 2
var $form = $("#your-form-id");
$form.validate().settings.ignore = [];
});
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();
});