bPopup
21.04.12: New release, bPopup version 0.7.0
bPopup is a learning and exploring jQuery project. It's a lightweight cross browser jQuery popup plugin. It's not creating your popup but doing all the logic as opening, closing, centering on resize & scroll, creating a modal overlay etc. It can open any container you create with all kinds of content. bPopup has been tested in IE67-9, FF2-7, Opera 9-10, Safari 4-5 and Chrome 4-15.
Contents
How to use bpopup
Basic example that will bind a click event which will trigger bPopup when fired. Add a reference to the jquery core lib (newer than 1.3.x) and bPopup. Please don't hotlink to bPopup:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script src="jquery.bpopup-x.x.x.min.js"></script>
Markup:
<html>
<head> ... </head>
<body>
...
<!-- Button that triggers the popup -->
<button>POP IT UP</button>
<!-- Element to pop up -->
<div>Content of popup</div>
...
</body>
</html>
CSS:
element_to_pop_up { display:none; }
The magic:
// Semicolon (;) to ensure closing of earlier scripting // Encapsulation // $ is assigned to jQuery ;(function($) { // DOM Ready $(function() { // Binding a click event // From jQuery v.1.7.0 use .on() instead of .bind() $('button').bind('click', function(e) { // Prevents the default action to be triggered. e.preventDefault(); // Triggering bPopup when click event is fired $('element_to_pop_up').bPopup(); }); }); })(jQuery);
Or with custom settings
;(function($) { $(function() { $('button').bind('click', function(e) { e.preventDefault(); $('element_to_pop_up').bPopup({ appendTo: 'form' , zIndex: 2 , modalClose: false }); }); }); })(jQuery);
Enjoy
Options
| API – name [type] (default value) | |
| amsl [int] (50) | Above Mean Sea Level. Vertical distance from the middle of the window, + = above, - = under. |
| appendTo [string] (’body’) | Element to append popup (and modal overlay) to. For asp.net sites append to 'form'. |
| appending [bool] (true) | Should the popup append to an element or just open where it is? Version 0.7.0 |
| closeClass [string] ('bClose') | Class to bind the close event to. Version 0.3.3 |
| content [string] ('ajax') | Content of bpopup. Types: ['ajax', 'iframe', 'xlink']. If loadUrl isn't defined it'll not use content type. Version 0.4.1 |
| contentContainer [string] (null) | Element which content should be added to. If undefined/null it will add it to $(this). Usage contentContainer:'.element' or contentContainer:'#element'. Version 0.4.1 |
| escClose [bool] (true) | Should popup close when press on escape? |
| fadeSpeed [int/string] (250) | Animation speed on fadeIn/out. Version 0.3.6 |
| follow [bool,bool] ([true,true]) | Should the popup follow the screen vertical and/or horizontal on scroll/resize? [horizontal, vertical, fixed on screen (see positionStyle instead)] Version 0.3.6. Changed in version 0.5.0 and again in version 0.6.0 and again in version 0.7.0. |
| followSpeed [int/string] (500) | Animation speed for the popup on scroll/resize. Version 0.3.6 |
| loadUrl [string] (null) | External page or selection to load in popup. Version 0.3.4 |
| modal [boolean] (true) | Should there be a modal overlay behind the popup? |
| modalClose [bool] (true) | Should the popup close on click on overlay? Version 0.4.0 |
| modalColor [string] ('#000') | What color should the overlay be? Version 0.3.5 |
| opacity [float] (0.7) | Transparency, from 0.1 to 1.0 (filled). Version 0.3.3 |
| position [int,int] (['auto','auto']) | Defines the position where the popup should pop up. 'auto' = center, [horizontal, vertical] Version 0.5.0. Changed in version 0.7.0, swapped positions so it's now x, y instead of y, x |
| positionStyle [string] ('absolute') | How you the popup follow? Position 'absolute' or 'fixed' Version 0.7.0 |
| scrollBar [bool] (true) | Should scrollbar be visible? |
| zIndex [int] (9999) | Popup z-index, modal overlay = popup z-index - 1. |
| Events | |
| callback | Event fires after the popup has loaded.
Usage: $('element_to_pop_up').bPopup({ //options }, function(){ //callback }); Version 0.3.5 |
| onOpen | Event fires before the popup opens.
Usage: $('element_to_pop_up').bPopup({ onOpen: function(){ //doMagic }}); Version 0.5.0 |
| onClose | Event fires after the popup closes.
Usage: $('element_to_pop_up').bPopup({ onClose: function(){ //doMagic }}); Version 0.5.0 |
| Public Function | |
| close() | Closes the popup.
Usage: $('element_to_pop_up').bPopup().close(); Version 0.4.0 |
| Recycle Bin - not there anymore | |
| duration[int/string] ('normal') | Animation speed.Removed in version 0.3.6 - See fadeSpeed and followSpeed. |
| minTop [int] (20) | Minimum distance from top to popup. Removed in version 0.3.6 |
| vStart [int] (null) | Vertical start position for popup. Version 0.3.6 Removed in version 0.5.0 - See Position. |
| xLink [boolean] (false) | Is the popup a xlink popup? Version 0.3.4, Removed in version 0.4.1 use content type instead (content:'xlink') |
Changelist
0.7.0 change-list (21.04.12):
- Bugfix: Multiple popup count fix (Thanks to Michael for reporting)
- Bugfix: Callback now returns 'this' instead of 'window' (Thanks to Jeppe for reporting)
- Bugfix: Scroll before popup is loaded opacity fix
- Bugfix: Moved initialization of popup to after onOpen event so it will center properly when adding stuff onOpen.
- Changed: Important note - Swapped arguments in Position so it now takes [x, y] instead of [y, x] like everything else in the world.
- Changed: Important note - Also swapped arguments in Follow so it also takes [x, y] instead of [y, x] and removed third argument. See positionStyle instead.
- New option: appending: true. Defines if the popup should append to an element or just open where it is.
- New option: positionStyle: 'absolute'. Defines the position style which has impact on how the popup follows on scroll and resize. Absolute or fixed.
- Removed private function, getDistanceToBodyFromLeft().
0.6.0 change-list (29.10.11):
- New feature: Supports multiple bPopups. Now you can open all the bPopups you want on top of each other.
- New feature: Won't follow if popup is bigger then the window.
- Changed: Added 3rd parameter to follow, default false. If true the popup will be fixed on the screen.
- Removed: Browser detecting is bad why I removed the check for IE6. IE6 doesn't support position: fixed but I don't support IE6 any more. I'm afraid I killed it. It's easy to add if you still need to support IE6.
0.5.1 change-list (13.04.11):
- Bugfix: Added a duration time to the hide() call so onOpen and loadUrl always will be trigged when needed.
- Bugfix: Added frameborder="0" and scrolling="no" to iframe to remove borders in IE. Removed width="100%" and height=100%" from iframe so you have full control over the iframe
- Code update: updated the logic regarding follow and position
0.5.0 change-list (12.03.11):
- bPopup, now with more control and features!
- New events: onOpen and onClose
- New option: Position['auto','auto']. Replacing vStart. Gives you full control where the popup should be.
- Changed option: follow changed to array of booleans, follow[true,true]. Defines if the popup should follow vertical and/or horizontal.
- Changed option: default value for amsl changed from 150px to 50px.
- Removed option: vStart, see Position.
- Removed feature: the popup doesn't auto reset input fields or auto focus any more. If you need this feature do the magic inside the onOpen event.
- Removed feature: xlink removed from content type. Instead do the xlink stuff inside the onOpen event.
- Bugfix: Modal overlay fits whole screen on an iphone in safari.
- Known issue: The popup doesn't center properly when zooming on an iphone in safari.
0.4.1 change-list (17.10.10):
- New option: content, now it's possible to load content into the popup through Ajax or in an iframe. It takes the url from loadUrl.
- New option: contentContainer, gives you the possibility to load content into a small area of the popup e.g. a div at the bottom.
- Removed option: xLink, use content type instead (content:'xlink')!
0.4.0 change-list (22.09.10):
- Attention: In this update there has been changes that affect how you interact with the popup!
- New option: modalClose (should the popup close on click on overlay?)
- New way to create the popup.You should now call $(selector).bPopup() instead of $(selector).openPopup().
- New way to force popup to close. Force close by calling the public function close(), $(selector).bPopup().close(), instead of triggering the close event with $('.bClose').closePopup(). This will stop cluttering up the
$.fnnamespace. - Changed default value for opacity from 0.5 to 0.7
- Ensures that the same popup can't be opened twice at a time.
- Next update will include support for iframes, generic xlink support and more.
0.3.6 change-list (14.07.10):
- New options: fadeSpeed, follow, followSpeed, vStart
- Deleted: duration, minTop
- Included position:absolute styling on popup in plugin
0.3.5 change-list (05.07.11):
- New option: modalColor
- bPopup can now take callback functions
0.3.4 change-list:
- New option: loadUrl
- The popup can now open an url inside the popup
- Implemented x-link feature
- Refactored code, created private help functions
- Changed default value for scrollBar to true
0.3.3 change-list:
- New options: opacity, closeClass
- Changed modal overlay to position fixed in supported browsers. Non position fixed supported browsers still uses position absolute.
- Added default close event
- Fixed issue with overlay in IE6+7 and body positioned relative with a width
0.3.2 change-list:
- Modal overlay width miscalculation on resize.
- Auto textfield focus
- Resetting textfields before showing popup
0.3.1 change-list:
- New options: escClose, zIndex and minTop.
- Fixed bug with modal overlay when body has position: relative and a width. Now calculates the distance from the left to the body.
0.3.0 change-list:
- Unbind events on close.
- Centering popup on resize.
- Centering popup on horizontal scroll.
- Refactor code.
What can you do?
- Report bugs
- Help optimizing code
- Give suggestions
Downloads
Validering af e-mail adresser
Når jeg udvikler software eller websider, arbejder jeg ofte med formular, hvorfor der forekommer input felter, som en bruger skal udfylde. For at sikre sin data, så det er mest brugbart og korrekt, er det altid en god skik at lave validering. Uden validering kan man risikerer at dataene bliver ubrugelig og dermed værdiløse. Ofte er valideringen simpel i form af tjek om et givet felt er udfyldt eller om det er den korrekte datatype. Men når vi snakker e-mail adresser, er det lidt mere kompliceret. En korrekt e-mail adresse består af en række regler:
Starter med minimum et tegn efterfulgt af et snabel a, hvor der så igen er minimum et tegn efterfulgt af en prik. Sidste men ikke mindst defineres domænetypen, som er på minimum 2 bogstaver fx dk, de etc.
En nem måde at håndtere en række regler for en tekststreng er ved at bruge Regular Expression. Et regulært udtryk er en tekststreng, som beskriver en mængde af tekststrenge og som overholder syntaksen for opstilling af det regulære udtryk. Så for at kunne validere en e-mail adresse vil jeg lave et regulært udtryk:
(/^.*?@\w[\w.-]*\.[a-z]{2,4}$/i)
Overstående giver måske ikke så meget mening, hvis man ikke kender til regulære udtryk, så jeg vil anbefale, at man læser om det på nettet [1][2][3]. Men jeg vil selvfølgelig ikke snyde jer for en forklaring af overstående udtryk.
^ : Starten af strengen.
.* : 0 eller flere tegn.
? : Non greedy (dvs. match mindst mulige tegn i stedet for flest mulige, 0 eller 1 gange).
@ : Et ”@”
\w : Et tegn a-z, A-Z eller 0-9 og ”_”
[\w.-]* : 0 eller flere tegn, som er a-z, A-Z eller 0-9, foruden ”.” eller ”-”
\. : Et ”.”
[a-z]{2,4} : 2-4 tegn af typen a-z. For eventuelt at fremtidsikre sine e-mail adresser kan man sætte max antal tegn op.
$ : Slutningen på strengen.
i : ”ignore case”, ingen forskel på store og små bogstaver.
dinbror blog
Forfølg mig her
Nye indlæg
- CSS: Alt du bør vide omkring centrering
- Tips & tricks til bedre CSS og markup
- bPopup
- CSS: Sådan bruger du @font-face
- Sådan laver du hurtigere websider






