Archive for the 'Javascript' Category

jQuery plugin: Autocomplete actualizado para Internet Explorer 7 y 8

El conocido y muy utilizado jQuery Autocomplete Plugin tiene varios problemas con Internet Explorer 8 y 7, primero el cursor aparece al comienzo del campo de texto al seleccionar una opción y luego al utilizar la opción multiple funciona bien al seleccionar con las “flechas” y apretar ENTER, pero al seleccionar con un click una opción funciona de forma incorrecta, aquí el código del plugin modificado, puede que agregue luego otra versión con otras mejoras.

Probado con jQuery 1.4.2

Continue reading ‘jQuery plugin: Autocomplete actualizado para Internet Explorer 7 y 8′

Transición de imagenes o slideshow con jQuery

Para un par de sitios (aún no los lanzamos así que una vez que lo hagamos lo agrego al post) necesitábamos que existiera una transición de imágenes con un fade, algo bien simple, por lo que me puse a buscar un buen plugin de jQuery, pero nada era lo suficientemente simple y limpio, por lo que buscando encontre un muy buen post para construir uno, lo tomé como base y lo arreglé un poco para poder configurar el tiempo entre transiciones, el tiempo que dure el difumado y no tener que agregar css, quedando así:

	jQuery.fn.simpleSlide = function(a){

		a				= a || {};
		a.duration		= a.duration || 5000;
		a.transition	= a.transition || 1000;

		var	c	= $(this);

		$(c).css("position","relative");

		$("img",$(c))
			.css({
				'position'	: 'absolute',
				'top'		: '0px',
				'left'		: '0px',
				'z-index'	: '8'
				})
			.find(":first")
				.addClass("slide-active")
				.css('z-index','10');

		setInterval(function(){

				var $active = $("img.slide-active",$(c));

				if($active.length == 0) $active = $("img:last",$(c));

				var $next	= $active.next().length ? $active.next() : $("img:first",$(c));

				$active
					.addClass("slide-last-active")
					.css('z-index','9');

				$next
					.css({opacity: 0.0})
					.addClass("slide-active")
					.css('z-index','10')
					.animate({opacity: 1.0}, a.transition, function(){
						$active
							.removeClass('slide-active slide-last-active')
							.css('z-index','8');
					});
			}, a.duration);

	}

¿Como funciona?

Simple, un contenedor (ej. un div) y dentro una lista de imágenes:

	<div id="contenedor">
		<img src="imagen_1.jpg" alt="Imagen 1" />
		<img src="imagen_2.jpg" alt="Imagen 2" />
		<img src="imagen_3.jpg" alt="Imagen 3" />
		<img src="imagen_4.jpg" alt="Imagen 4" />
		<img src="imagen_5.jpg" alt="Imagen 5" />
	</div>
[/htm]

y obviamente con jQuery previamente cargado

[html]
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

para que se inicie la transición cuando cargue la página

	$(document).ready(function(){

		$("#contenedor").simpleSlide();

	});

si quieren configurar el tiempo en que demora en iniciar la nueva transición (duration) o el tiempo que dura el efecto (transition) deberían llamarlo así

	$(document).ready(function(){

		$("#contenedor").simpleSlide({duration:5000,transition:1000});

	});

Continue reading ‘Transición de imagenes o slideshow con jQuery’

PHP.JS funciones en PHP portadas a Javascript

Muchas veces desarrollando en Javascript echo de menos algunas funciones de PHP, en ocasiones existe un símil o directamente he tenido que portar desde PHP a Javascript.

Ayer buscando un símil de una función de PHP en Javascript me encontré con una excelente iniciativa “Porting PHP to Javascript“, una librería con 133 funciones de PHP portadas a Javascript, pueden descargarla en una versión normal o Namespaced.

¿Que tiene de especial la versión Namespaced?

Es que las 133 funciones vienen agrupadas en un solo objeto, es más fácil extender una esta librería y evita conflictos con funciones ya existentes, como por ejemplo, obtener el valor absoluto de un número en Javascript Math.abs(-4.5), utilizando PHP.JS abs(-4.5) y con PHP.JS Namespaced $P.abs(-4.5).

El Autor Kevin van Zonneveld además ha puesto a disposición un tester online de las funciones.

Pueden encontrar más información acerca de Namespace en Wikipedia.

jQuery como llegué a el, por que lo elegí y por dónde empezar

Dentro del mundo de las librerías o frameworks de Javascript hay muchos sabores de donde escoger como Prototype, jQuery, Dojo, Ext JS, YUI, etc, y además existen muchos argumentos válidos para elegir uno u otro, rapidéz, tamaño, comunidad, etc.

Partimos el 2005 utilizando nuestra propia librería para manejar los XMLHttpRequest, dada la curiosidad de Cristián Meléndez sobre Gmail y el apoyo del artículo “Dynamic HTML and XML: The XMLHttpRequest” en Apple Developer Connection, por lo que al ver el potencial inmediatamente aprovechamos la oportunidad de agregarlo a nuestros desarrollos cuando aún no se masificaba el concepto AJAX. Realmente nosotros no teníamos idea del concepto en ese momento para nosotros era un XMLHttpRequest. Su utilización nos dio muy buenos resultados simplificando muchas tareas y un efecto muy positivo en nuestros clientes y en el proceso de venta.

El 2006 empecé a escuchar sobre frameworks de Javascript, buscando encontré Prototype, pero tenía una muy mala documentación e información disgregada, lo que ya han corregido por lo que se puede ver en su sitio, esto me llevó a buscar una alternativa y me topé con jQuery, me gustó la forma fácil e intuitiva de acceder al DOM, la posibilidad de concatenar eventos, la librería para el manejo de AJAX y principalmente su documentación, que fue el punto principal de mi elección.

Últimamente he conversado mucho sobre el tema de que elegir, y creo que todos tienen argumentos válidos, el más fuerte por ahora va en el tema de que tanto Ruby on Rails como CakePHP vienen con helpers de Prototype, pero por lo que he leído, hay ya iniciativas que están armando helpers de jQuery para ambos frameworks, por lo que espero dejará de ser este un punto crítico en la elección.

Para mí por el tiempo que llevo con jQuery me resulta muy cómodo y rápido trabajar con el, puedo fácilmente con FireFox y Firebug mostrar sus ventajas, que con pocas líneas y solo el core se pueden hacer cosas muy interesantes, por lo que les puedo decir que si eligen jQuery, los podré ayudar y si quieren, enseñar, más allá de eso es hilar muy fino en detalles que finalmente considero no muy importantes.

¿Por dónde empezar? Como comente en el párrafo anterior les recomiendo tener FireFox y Firebug, luego descargar la última versión de jQuery y ponerse a jugar. Esencial es la documentación muy clara de jQuery, y apoyarse en algunos tutoriales como los que puedes encontrar en la página de jQuery o este excelente tutorial de jQuery para diseñadores por WebDesignerWall, y por último dejo este post para ayudarlos en lo que pueda.

Este nuevo blog lleva poco y quizás no obtenga muchas respuestas, pero de todas formas dejo una pregunta …

¿Que framework elegiste, por que y que ventajas crees que tiene sobre otros?

Crear gradientes en PHP y Javascript

Mientras trabajábamos en un proyecto para un cliente de OXUS se nos ocurrió implementar una solución parecida a una nube de tags para orientar al usuario en la elección sobre distintas opciones. Luego pensamos en agregar colores a los distintos tamaños generados en la nube, pero para esto debíamos tener una forma simple de generar un gradiente de un color a otro, comencé buscando códigos en php y javascript, finalmente encontré uno muy bueno en php, pero me di cuenta que no servía de mucho, ya que dinámicamente dependiendo de la selección del usuario la nube se iba modificando, por lo que me puse a portar este código de php a javascript.

Continue reading ‘Crear gradientes en PHP y Javascript’