Skip to content

Commit

Permalink
Merge pull request #7 from mingliangfeng/issue-6
Browse files Browse the repository at this point in the history
Issue 6
  • Loading branch information
mingliangfeng committed Jan 22, 2014
2 parents 82938b6 + 256ae36 commit 10f072a
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 18 deletions.
31 changes: 25 additions & 6 deletions dist/jquery.validate.bootstrap.popover.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 7 additions & 6 deletions dist/jquery.validate.bootstrap.popover.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 19 additions & 6 deletions jquery.validate.bootstrap.popover.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ $ = jQuery
# Adds plugin object to jQuery
$.fn.extend validate_popover: (options) ->
settings = $.extend true, {}, $.validator.popover_defaults, options
$.validator.get_offset_element = settings.get_offset_element if settings.get_offset_element
this.validate(settings)

$.extend $.validator,
popover_defaults:
onsubmit: true
popoverPosition: 'right'
popoverContainer: 'body'
hideForInvisible: true
success: (error, element)-> $.validator.hide_validate_popover(element)
errorPlacement: (error, element)->
message = error.html()
Expand All @@ -32,9 +34,11 @@ $.extend $.validator,
$('.popover-content', $v_popover).html(message)
$.validator.reset_position $v_popover, element
$v_popover.show() if message? and message != ''

get_offset_element: (element)-> $(element)

reset_position: (popover, element)->
offset = $(element).offset()
offset = $.validator.get_offset_element(element).offset()
offset_adjust = $(element).data('popover-offset') || "0,0"
[top_adjust, left_adjust] = offset_adjust.split(',')

Expand All @@ -47,7 +51,7 @@ $.extend $.validator,
left = offset.left + $(element).width() + 20 + parseInt(left_adjust)
popover.css({top: top, left: left})

get_position: (element) -> $(element).data('popover-position') || $.data($(element)[0].form, "validator").settings.popoverPosition
get_position: (element) -> $(element).data('popover-position') || $.validator.validator_settings(element).popoverPosition

reposition: (elements)->
if elements?
Expand All @@ -59,18 +63,27 @@ $.extend $.validator,
ele = $(element)
popover = ele.data('validate-popover')
if popover? and popover.is(":visible")
if ele.is(":visible")
$.validator.reset_position popover, element
else
if $.validator.hide_popover_for_invisible(element) and !ele.is(":visible")
popover.hide()
else
$.validator.reset_position popover, element

get_validate_popover: (element)->
v_popover = $(element).data('validate-popover')
unless v_popover?
$container = $($.data($(element)[0].form, "validator").settings.popoverContainer)
$container = $($.validator.validator_settings(element).popoverContainer)
v_popover = $("<div class='popover #{$.validator.get_position(element)} error-popover' id='validate-popover'><div class='arrow'></div><div class='popover-content'></div></div>").appendTo($container)
v_popover.click -> $(this).hide()
$(element).data('validate-popover', v_popover)
$.validator.popover_elements_cached.push element
v_popover.hide()

hide_popover_for_invisible: (element)->
element_setting = $(element).data('popover-hide-for-invisible')
if element_setting?
element_setting
else
$.validator.validator_settings(element).hideForInvisible

validator_settings: (element)-> $.data($(element)[0].form, "validator").settings

0 comments on commit 10f072a

Please sign in to comment.