Archive for the ‘JavaScript’ Category

Función “KILLER” para validar una fecha.

Monday, July 13th, 2009

Ahi les va la masacuata:

function checkDate(d, m, y)
{
return !(isNaN(d)||isNaN(m)||isNaN(y)||(!(y%4==0&&(y%100!=0||y%400==0))&&m==2&&d>28)||(d<1||m<1||y<1000||d>31||m>12||y>9999)||((m==4||m==6||m==9||m==11)&&d>30)||(m==2&&d>29));
}

¿Que hace esta función? (alias WTF)

Realiza una una sencilla operación lógica para validar si los parametros de entrada “d”, “m” y “y” (dia, mes, año correspondientemente) forman una fecha valida entre el 1ro de Enero del año 1000 hasta el 31 de Diciembre del año 9999

Devuelve TRUE en caso de ser una fecha valida, de lo contrario devuelve FALSE

Con esto demuestro que no es necesario poner 40 elses anidados en 80 ifs para hacer una comparación compleja.

JavaScript: ¿Bug en parseInt?

Wednesday, October 1st, 2008

¿Se han fijado que cuando utilizamos la función parseInt de JavaScript con valores “08″ ó “09″ la función regresa un 0? (si, un bonito y redondo cero)

Si no se habían dado cuenta y han utilizado esta función en alguna de sus aplicaciones mas vale que sigan leyendo.

¿Bug ó no Bug? he ahi el dilema…onion_cry

Pues no, no es un bug.. pero vaya que si podria ocacionar uno que otro dolor de cabesa… entonces ¿what is the fucking problem? … pues el fucking problem es que cuando parseInt recibe como primer parametro de entrada una cadena que inicia con un cero pienza que sera un valor base-8 (octal) y como 8 y 9 no son valores octales validos nos regresa nuestro bonito cero! =) ¡a gusto! ¿no?

Oh dios! onion_wtf ¿y que hago para resolver este problema?

Facil.. utilizaremos el segundo parametro de parseInt, el cual parece que es un parametro sacado de la manga pues es raro ver información sobre el (por lo menos yo supe de su existencia hasta un par de años despues de conocer a parseInt), es decir que lo utilizaremos asi:

parseInt(“08″, 10) ;

¿y que hace ese 10 ahi? onion_? Pues el segundo parametro le dice a parseInt que vamos a trabajar en base-10, y asi evitamos el bonito cero inesperado.
¿Esta demas decir que funciona también con “09″?

ES MUY IMPORTANTE que utilicemos parseInt de la manera correcta para evitar “BUG” en nuestras aplicaciones.

Nota:
Con parseFloat no se presenta este problema, y el parseInt de Opera tampoco lo presenta.

JavaScript: Agregar metodo “trim”

Tuesday, September 30th, 2008
Creador de JavaScript ó ECMAScript

Brendan Eich - Creador de JavaScript

Antes que nada vamos a darle las gracias a Brendan Eich (el feo ese de la derecha) por crear JavaScript, el lenguaje vital para el desarrollo de aplicaciones web, y que sin el la web no seria como hoy la conocemos.

Por cierto, también demosle las gracias por no implementar el sencillo método trim en javascript =) ¿En que piensas Brendanito?

Directo al grano!

Para poder implementar nuestro método trim a javascript, vamos a utilizar prototype y un poquitin de expresiones regulares (si no sabes de que tratan estas 2 cosas raras, picale a los enlaces).

Así de fácil es esto:

String.prototype.trim = function()
{
	// Aquí aplicamos expresiones regulares en los replace
	return this.replace(/^\s+/, '').replace(/\s+$/, '');
}

Oh My Fucking God! ¿pero que paso aquí? Nada, nada damas y caballeros, no se asusten, lo unico que hicimos fue, que por medio de prototype, agregamos un nuevo método al Objeto String (nativo de javascript) llamado trim, el cual se encarga gracias a su método replace (este si no se le olvido a Brendan ¬¬) eliminar cualquier caracter de espacio al inicio y al final de la misma cadena, utilizando expresiones regulares

Veamos un ejemplo:

Supongamos que ya incluimos el código visto mas arriba en nuestra aplicación web, entonces ahora podemos hacer uso de nuestro nuevo y reluciente método trim como si de cualquier otro método de String se tratara.

var sMiString = "   Que bonito estoy n_n  "; // Declaramos nuestro poderoso String
alert("[" + sMiString.trim() + "]"); // Veamos el resultado

¿Fácil no es así? Bastante diría yo.
Ahora ya tenemos un dolor de cabeza menos a la hora de programar nuestras aplicaciones web.

PD: Que alguien me diga ¿que tan difícil era para Brendan implementar esto en JavaScript?

Retro Alimentación:
A ver, quien se anima a escribir un método ltrim y un método rtrim?
Puedes encontrar información sobre ltrim y rtrim en esta bonita pagina