Category Archives: javascript

Cookies en javascript

function setCookie(key, value, expirydays)

{

var expires = new Date(); expires.setTime(expires.getTime() + (expirydays * 24 * 60 * 60 * 1000)); document.cookie = key + ‘=’ + value + ‘;expires=’ + expires.toUTCString();

}
function getCookie(key) {

var keyValue = document.cookie.match(‘(^|;) ?’ + key + ‘=([^;]*)(;|$)’); return keyValue ? keyValue[2] : null;

}

Rellenar valores a todas las cajas de texto rapidamente jquery

Estamos trabajando para rellenar y guardar un formulario y queremos ver si todos los valores persiten en bbdd y se recuperan correctamente.

Para ellos abrimos la consola del navegador:

Y ejecutamos el siguiente código:

var i=1;$('input[type=text]').each(function(){ $(this).val(i);i++;})

Así no tenemos que ir campo por campo rellenandolo.
Para marcar el segundo elemento de todos los select:

$('select').each(function(){ 
   this.selectedIndex=1;
    
})

Y para marcar el ultimo de los radio

$('input[type=radio]').each(function(){ 
  $(this).attr('checked', true );
    
})

Usar eventos en javascript

De cara a optimizar el código tengo un fichero con varias funciones js, que las utilizo en varias paginas, pero quiero poder variar algún comportamiento para la misma acción en distintas paginas, por lo que para evitar tener que pasar algún parámetro o duplicar funciones voy a utilizar eventos.

Así en la función del fichero js lanzo el evento:

function guardarx(){
//guardo con ajax...
.ajax(....
// Creo el evento
var event = new CustomEvent("evento-guardar-x", { "Parametro": "Valor" });
//Lanzo el evento
document.dispatchEvent(event);
}

Y luego en cada una de las paginas que utilizan el js puedo añadir un listener si deseo añadir funcionalidad especial.

document.addEventListener("evento-guardar-x", function(e) {
console.log(e);
});

Podeis ver una demo aqui

Cargar una imagen si falla la principal

Si en nuestra pagina cargamos una imagen que no está en nuestro servidor nos arriesgamos a que esa imagen deje de estar disponible y nos encontremos que no carga y nuestra web quede fea.

Para evitar eso podemos indicar una imagen de “reserva” que se cargará si no lo hace la principal.

Para ello definimos una función javascript:

<script>
    function imgError(image,url) {
    image.onerror = "";
    image.src = url;
    return true;
}
</script>
<img src="https://www.imagenquepuedefallar.com/imagen/image.png" onerror="imgError(this,'image/generic.png')"/>

Optimizar tiempo de carga web con imágenes lazy

Partimos de una página que “pesa” 23mb (sí, tiene imágenes grandes muy bonitas) y las carga todas normalmente. El resultado es que tarda más de 1 minuto en poder navegar

Si utilizamos el plugin de jquery jQuery.Lazy, y configuramos las imagenes como lazy:

Cargando por defecto una imagen pequeña de carga, que ayuda a saber que la imagen se está procesando

Y por otro lado cambiamos el css para en lugar de poner la imagen de fondo directamente

Por codigo javacript que cambia la propiedad

Tenemos como resultado

Lo que mejora la carga de la web en mas del 75%

El resultado se puede ver en:
http://sociedadhistorica.com/indexVACIO.php
Y la pagina anterior al cambio en:
http://sociedadhistorica.com/indexOLD.php
Actualmente utiliza otro sistema, en lugar de cargar la imagen de “cargando” en cada una de ellas, se ha generado una imagen “lazy” con una calidad del 10%, con la consiguiente reducción de tamaño.
Por defecto carga esa imagen y por detras la imagen con calidad óptima, con ello se consigue una pequeña penalización con respecto a la version anterior, pero se obtiene una mejor sensación al tener la pagina con todas las imagenes, mientras se cargan las de alta calidad.
http://sociedadhistorica.com

Mostrar placeholder siempre en input HTML

El atributo placeholder de un input se muestra mientras no tiene valor pero luego desaparece.
La idea es mostrar ese contenido en la parte inferior derecha de la caja de texto siempre que tenga un valor.
Asi para una caja como:

Cuando ponemos el valor el placeholder pasa a estar en la parte inferior

El código necesario está en github :

Y se puede ver funcionando en el siguiente enlace

Para ello hay que incluir la libreria jplaceholder.js ( es necesario el uso de JQUERY )

Y posteriormente ejecutar el codigo:

$('input').jPlaceHolderEmpty();

verificar un formulario con verify.notify de manera manual

Si tenemos un formulario y queremos evaluarlo antes de hacer el submit, necesitamos llamar a validate

<script>
function callback(res){
	if (res){
		document.getElementById('formularioquequieroenviar').submit();
	}
}
function comprobar(){
	$('#formularioquequieroenviar').validate(callback);
								
}
</script>
<form id="formularioquequieroenviar" action="xxx.php" method="post">
<input id="numero" name="numero" type="text" placeholder="numero" data-validate="required" />
<input type="button" value="Comprobar" />
</form>

El resultado del callback será el que determine si se hace el submit o no.

Jugando con imagenes en jquery (añadir texto y reemplazar texto )

Añadir automaticamente una leyenda a una imagen con su texto alternativo o poder cambiar las imagenes por un div con el mismo tamaño que la imagen y como contenido el texto alternativo.

Para ello nos hace falta JQuery y estilo css

Dada una imagen

Lo que obtenemos es la misma imagen pero con una leyenda inferior

La otra variante oculta la imagen y en su lugar muestra un hueco del mismo tamaño pero con el texto alternativo como contenido.

El ejemplo completo se puede ver aquí