Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Twitter Bootstrap popovers for jQuery validation notifications?

I can make popovers appear using bootstrap easily enough, and I can also do validations using the standard jQuery validation plugin or the jQuery validation engine, but I can't figure out how to feed one into the other.

I think what I need is some hook which is called by the validator when it wants to display a notification, give it a closure that passes the message and the target element to a popover. This seems like a kind of dependency injection.

All nice in theory, but I just can't figure out where that hook is, or even if one exists in either validation engine. They both seem intent on taking responsibility for displaying notifications with all kinds of elaborate options for placement, wrappers, styles when all I'm after is the error type(s) (I don't necessarily even need message text) and element it relates to. I've found hooks for the entire form, not the individual notifications.

I much prefer validation systems that use classes to define rules, as they play nicely with dynamically created forms.

Anyone have a solution or a better idea?

like image 698
Synchro Avatar asked Dec 09 '11 00:12

Synchro


People also ask

How do I show Popovers in jQuery?

To create a popover, add the data-toggle="popover" attribute to an element. Note: Popovers must be initialized with jQuery: select the specified element and call the popover() method.

Is Popper js required for bootstrap 5?

You must include popper.min.js before bootstrap.js or use bootstrap.bundle.min.js / bootstrap.bundle.js which contains Popper in order for popovers to work! Popovers require the tooltip plugin as a dependency.

How do I create a popover in bootstrap 5?

To create a popover, add the data-bs-toggle="popover" attribute to an element. Note: Popovers must be initialized with JavaScript to work.

How does bootstrap define popover?

A Bootstrap Popover is an attribute in bootstrap that can be used to make any website look more dynamic. Popovers are generally used to display additional information about any element and are displayed with a click of a mouse pointer over that element.


1 Answers

This is a hands-on example:

$('form').validate({     errorClass:'error',     validClass:'success',     errorElement:'span',     highlight: function (element, errorClass, validClass) {          $(element).parents("div[class='clearfix']").addClass(errorClass).removeClass(validClass);      },      unhighlight: function (element, errorClass, validClass) {          $(element).parents(".error").removeClass(errorClass).addClass(validClass);      } }); 

enter image description here

It doesn't really use bootstrap popovers, but it looks really nice and is easy to achieve.

UPDATE

So, to have popover validation you can use this code:

$("form").validate({   rules : {     test : {       minlength: 3 ,       required: true     }   },   showErrors: function(errorMap, errorList) {     $.each(this.successList, function(index, value) {       return $(value).popover("hide");     });     return $.each(errorList, function(index, value) {       var _popover;       _popover = $(value.element).popover({         trigger: "manual",         placement: "top",         content: value.message,         template: "<div class=\"popover\"><div class=\"arrow\"></div><div class=\"popover-inner\"><div class=\"popover-content\"><p></p></div></div></div>"       });       // Bootstrap 3.x :             //_popover.data("bs.popover").options.content = value.message;       // Bootstrap 2.x :       _popover.data("popover").options.content = value.message;       return $(value.element).popover("show");     });   } }); 

You get something like this:

enter image description here

Check out the jsFiddle.

like image 97
Kenny Meyer Avatar answered Sep 26 '22 19:09

Kenny Meyer