crayonsA veces necesitamos ofrecer unos cuantos colores predefinidos a un usuario para que pueda seleccionar cual de todos prefiere para pintar un objeto o dejar como color predeterminado de una parte de nuestra pagina.

Jquery nos ayuda mucho en esto así que he terminado de ayudarnos haciendo una función propia de jquery llamada colorselect().

JavaScript:
  1. $.fn.colorselect = function(colores, campo, tamanio) {
  2.     if(tamanio==''){    tamanio = 20;        }
  3.     if(campo==''){    campo = 'color';   }
  4.     var o = '<input type="hidden" value="" name="campo" id="color_'+campo+'"/>';
  5.     for(i=0;i<colores.length;i++){
  6.         o += '<div style="height:'+tamanio+'px;width:'+tamanio+'px;margin:2px;float:left;background:'+colores[i]+'" onclick="'+
  7.              '$(\'.color_selector\').css({\'border\':\'0px solid transparent\', \'magin\':\'2px\'}); '+
  8.              '$(\'#color_'+campo+'\').attr({value: \''+colores[i]+'\'}); '+
  9.              '$(this).css({\'border\':\'2px solid '+colores[i]+'\', \'magin\':\'0px\'});'+
  10.              '" class="color_selector"> </div>\n';
  11.     }
  12.     $(this).html(o);
  13. };



Esta función no se diferencia mucho de las que solemos ver en PHP, también tiene varios valores opcionales.
El primer valor es un array con los nombres de los colores en tipo css (nombres predeterminados como "black" o "red" y nombres en hexadecimales como "#000"), el segundo el nombre del campo que almacenará el color seleccionado y el tercero el tamaño del cubo de selección.

Ejemplo para el ID "color_select":

JavaScript:
  1. 
  2. $(document).ready(function(){
  3.     $("#color_select").colorselect(Array('black', 'green', 'yellow', 'orange', 'red', 'blue'), 'color', 20);
  4. });



A continuación dejo un ejemplo de una pequeña pagina para probarlo..

HTML:
  1.     <head>
  2.         <title>LiveCuadricula</title>
  3.         <script src="http://code.jquery.com/jquery.js"                type="text/javascript"></script>
  4.         <script src="http://gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js"  type="text/javascript"></script>
  5.         <script type="text/javascript">
  6. $.fn.colorselect = function(colores, campo, tamanio) {
  7.     if(tamanio==''){    tamanio = 20;        }
  8.     if(campo==''){    campo = 'color';   }
  9.     var o = '<input type="hidden" value="" name="campo" id="color_'+campo+'"/>';
  10.     for(i=0;i<colores.length;i++){
  11.         o += '<div style="height:'+tamanio+'px;width:'+tamanio+'px;margin:2px;float:left;background:'+colores[i]+'" onclick="'+
  12.              '$(\'.color_selector\').css({\'border\':\'0px solid transparent\', \'magin\':\'2px\'}); '+
  13.              '$(\'#color_'+campo+'\').attr({value: \''+colores[i]+'\'}); '+
  14.              '$(this).css({\'border\':\'2px solid '+colores[i]+'\', \'magin\':\'0px\'});'+
  15.              '" class="color_selector"> </div>\n';
  16.     }
  17.     $(this).html(o);
  18. };
  19. $(document).ready(function(){
  20.     $("#color_select").colorselect(Array('black', 'green', 'yellow', 'orange', 'red', 'blue'), 'color', 20);
  21. });
  22.         </script>
  23.     </head>
  24.     <body>
  25.         <div id="color_select">contenido por si el Javascript está desactivado</div>
  26.     </body>
  27. </html>