I'm using bootstrap validator callback to valid a field. I also want to fire the bootstrap validator only on a button click. So I binds the button with bootstrap validator using
$(document).ready(function () {
$('#mybtn').click(function () {
$('#formId').bootstrapValidator('validate');
});
});
But the problem is that the validator fires only the first time and then if the validation is false it shows the error messages and then if doesn't gets fired again with that button click. And if true then the corresponding functionality working.
here is my html
<form id="formId">
<input type="text" name="Iname" data-bv-trigger='null'/>
</form>
here is my validator
$('#formId').bootstrapValidator({
fields: {
Iname: {
validators: {
callback: {
callback: function (value, validator, $field) {
if(!isValidData(value)) {
return {
valid: false,
message: "invalid message"
};
}
else {
return { valid: true };
}
}
}
}
}
}
}).on('success.form.bv', function (e) {
e.preventDefault();
//Do corresponding operation
});
I only want to fire the bootstrapValidator only at button click. If i omit the data-bv-trigger attribute the validator fires on keypress of that particular field but everything works fine. Initially i though that it unbinds my click event. but I was wrong. It actually fires the bootstrap validator but the validation is not working.
I've solved my requirement. After done a investigation by debugging bootstrapValidator.js I found that, after validating a element bootstrap keep a mark on that element by adding data attribute(Don't know in details about where it store the attr or what value stored) which only resets on a event which we actually input using data-bv-trigger attribute. By default it resets that attr on key press event of that element. At the same time it also validate the fields and shows error if any. But if we set data-bv-trigger="null", after one validation the data attr never resets. So any further validation on that element never happened. To resolve the problem if get that if bind my button click with revalidateField then it will force validate the filed. here is the syntax