home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 117
/
FreelogNo117-OctobreNovembre2013.iso
/
Theme
/
8GadgetPack
/
8GadgetPackSetup.msi
/
Gadgets.7z
/
Gadgets
/
StickyNotesOnline.gadget
/
Scripts
/
Lib
/
jquery.crayonbox.js
< prev
next >
Wrap
Text File
|
2011-06-16
|
3KB
|
109 lines
;(function($){ // secure $ jQuery alias
/********************************************************
* jquery.crayonbox.js - rev 2
* Copyright (c) 2009, Gelform
* Liscensed under the MIT License (MIT-LICENSE.txt)
* http://www.opensource.org/licenses/mit-license.php
* Created: 2009-01-20 | Updated: 2009-02-18
********************************************************/
/**
* create a crayonbox around a textfield
*
* @param object opt options
*/
jQuery.fn.crayonbox = function(opt)
{
// set default options and overwrite them
var options = jQuery.extend(
{
// your crayon colors
colors: new Array('Silver', 'Tomato', 'Orange', 'Yellow', 'Chartreuse', 'DeepSkyBlue', 'Violet'),
// define a default selected color
selected: null,
// the tag that will wrap each crayon - span, a or button work well
crayonTag: 'span',
// optional X button that will clear your selected crayon
clearButton: false,
// function that gets called once a crayon has been selected, returns the crayonbox
onSelection: function(){}
}, opt);
// return each object passed in
return this.each(function()
{
// if textfield has a color, select it (overwritten by option)
if ( '' != $(this).val() && null == options.selected )
{
options.selected = $(this).val();
}
// set self to containing span.crayonbox
var self = $(this).wrap('<span class="crayonbox"></span>').parent('.crayonbox');
// add click behavior
$(self).click(function(e)
{
var clicked = e.target;
if ( $(e.target).hasClass('crayon') )
{
$(self).uncolor();
$(clicked).html('♦').addClass('coloring');
$('input', self).val( $(clicked).attr('title') );
}
// optional callback
options.onSelection.call(self);
});
// build our crayons
var html = '';
for ( var i in options.colors )
{
$('<' + options.crayonTag + ' class="crayon" title="' + options.colors[i] + '"> </' + options.crayonTag + '>')
.appendTo( $(self) )
.css( 'background-color', options.colors[i] );
}
// add clear button
if ( options.clearButton )
{
$('<' + options.crayonTag + ' class="boxlid">X</' + options.crayonTag + '>')
.appendTo( $(self) )
.click(function(){
$(this).parents('.crayonbox').uncolor();
});
}
// select default crayon
if ( null != options.selected )
{
$(self).find('[title=' + options.selected + ']').trigger('click');
}
});
}
/**
* Unselect the selected crayon
*
* @param boolean clearTextfield option to clear the textfield as well
* @return object each item passed in
*/
jQuery.fn.uncolor = function(clearTextfield)
{
if (undefined == clearTextfield)
{
clearTextfield = true;
}
return this.each(function()
{
$('.coloring', this).html(' ').removeClass('coloring');
});
}
/*******************************************************************************************/
})( jQuery ); // confine scope