Manejo de Cookies en javascript

javascript

Os dejamos unas funciones por si se necesita manejar cookies en javascript.

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

Una aplicación de esto, podría ser, por ejemplo, si queremos mostrar un cierto mensaje a un usuario que entra por primera vez a nuestra página:

var aviso_nueva_web = readCookie('aviso_nueva_web');
if(!aviso_nueva_web || (aviso_nueva_web == '')) {
    show_aviso_new_web();
    createCookie('aviso_nueva_web', 1, 365);
}

Happy coding!

Problema con el onchange en radiobuttons en IE

javascript

Resulta que en Internet Explorer solo se ejecuta el onchange de un radiobutton cuando pierde el foco, y normalmente eso no es lo que queremos, sino que se ejecute el evento conforme se selecciona algún valor.

Para solucionar esto podemos encontrar 3 soluciones:

1 – Utilizar el onclick en lugar del onchange.

2- Solucionarlo con un poco de jQuery.

3- Añadir que haga blur en el onclick.

De las 3 opciones, la primera no da muy buenos resultados, y la segunda no nos gusta porque no mola cargar la pagina con jQuery si no es necesario.

Así que nos quedamos con la tercera opción.

El resultado sería algo así como:

<input type="radio" name="foo" value="Uno" onchange="alert(this.value);" onclick="this.blur();"/>Green<br/>
<input type="radio" name="foo" value="Dos" onchange="alert(this.value);" onclick="this.blur();"/>Blue

Happy coding!!

Reemplazar parámetro de una url por javascript

javascript

Este tipo de funciones que trabajan con cadenas de texto más o menos complejas como lo pueda ser una ‘url’, siempre son tediosas de hacer, y para algunos son todo un suplicio.

Seguro que hay mil maneras de hacer lo mismo que hace esta función, pero bueno, es una alternativa más, además, sin usar jquery ni ningún otro plugin o framework adicional.

Ahí va:

function replace_url_param(url, param_name, new_value)
{
    var base = url.substr(0, url.indexOf('?'));
    var query = url.substr(url.indexOf('?')+1, url.length);
    var a_query = query.split('&');
    for(var i=0; i < a_query.length; i++){
        var name = a_query[i].split('=')[0];
        var value = a_query[i].split('=')[1];
        if (name == param_name) a_query[i] = param_name+'='+new_value;
    }
    return base + '?' + a_query.join('&');
}

Esperamos que os sea útil.
(No dudéis en comentar otras alternativas, que seguro que son muy interesantes)

Cadena de texto multilínea en javascript

javascript

Parecerá una tontería pero seguro que muchos aún andan concatenando las líneas de un string con las ‘comillas’ y el ‘más’, al estilo:

var s = "Esto es un texto " +
"multilinea en javascript\n" +
"Gracias.";
alert(s);
/* Salida:
Esto es un texto multilinea en javascript
Gracias.
*/

No es mucho más sencillo, esto?

var s = "Esto es un texto \
multilinea en javascript\n\
Gracias.";
alert(s);
/* Salida:
Esto es un texto multilinea en javascript
Gracias.
*/

Happy codding!

Clase para validar fechas y horas por javascript

javascript

Con esta clase javascript, la validación de fechas y/o horas será pan comido.

Se controla si la fecha es en formato europeo o de estados unidos. Controla el número de días que tiene casa mes, e incluso controla el número de dias del mes de febrero, según si el año es bisiesto o no.

Aquí teneis el fichero para descargar: date_validator

Y aquí os dejamos el código completo:

Seguir leyendo