When you need to add validation on your input field and show them in a tipsy (just like in Question Page and Performance Bands Page), there is DnaAttachValidation.js you can use.  Example Usage: Codes were taken from javascript/Assessment_FieldController.js and the effects can be seen at the Question page within an assessment.  Note: You need to add the DnaAttachValidation.js on your page before you can use it.  for example you wanted to validate some input fields:  1               var $validator = Validator; 2               $validator.options.elements_to_validate = 'input'; 3               $validator.actions.validate(checkErrors); 4                5                function checkErrors() { 6                        $('.questions').find('input').each(function() { 7                                var $this = $(this); 8                                var value = $this.val().replace(/^\s+|\s+$/g,""); 9                                var is_rubric = false; 10                                if($this.attr('original-title')) { 11                                        $this.validationNote({is_error : false}); 12                               } 13 14                               if((value == '' || typeof(value) == 'undefined') && !$this.hasClass('response')) { 15                                        $this.validationNote({msg : 'This is a required field.'});      16                                } 17 18                               if($this.hasClass('response')) { 19                                        is_rubric = $this.closest('td').prev('td.question_rubric').find('input').is(':checked'); 20                                       if(is_rubric) { 21                                                if(isNaN(value)) { 22                                                        $this.validationNote({msg : 'This field should be numeric.'});  23                                                }       24                                        } 25                                } 26 27                                if($this.hasClass('points')) { 29                                        if(isNaN(value)) { 30                                                $this.validationNote({msg : 'This field should be numeric.'});  31                                        }       32                                } 33 34                        }).end();       35                }  Line 1-2 instantiate a new Validator and added some option where to validate (elements_to_validate can be a class selector or an id selector) and then added the callback function.  'checkErrors' is the callback function that has the logic that you can set when to show your validation message. Line 10-12 clears all tipsy until the user do something on any of the input fields. (you may need to add this in every start of your callback so that the current and right tipsy will show.) Line 14-16 is an example when to show your tipsy, so, in that code, when the input value is empty and it has a class name 'response' a tipsy is showed with a message 'This is a required field' The rest of the logic has the same purpose with LINE 14-16.  Note: You need not to bother about preventing the submit event since DnaAttachValidation already handles that.