Desactivar autocompletado en formularios HTML

Cuando estamos trabajando con formularios en la web, es muy común que por comodidad del usuario, el navegador incorpore algunos datos que son repetitivos entre ellos: nombre, apellidos, dirección de correo electrónico, etc. La idea es facilitarle la vida al usuario y hacer más rápido el uso del formulario.

Sin embargo, en ocasiones, desearemos que no se produzca dicho autocompletado. Por ejemplo, la web de un banco, un nombre de usuario en una plataforma, o algo susceptible de ser usado de forma malintencionada.

Para desactivar el autocompletado, disponemos del atributo autocomplete. Veamos un ejemplo de uso, lo incorporamos directamente en el formulario:

<form autocomplete="off">

O más concretamente al input en cuestión si queremos afinar en cada entrada de texto:

<input autocomplete="off">

Sin embargo hay un problema: no valida en los test del W3C. Para solventarlo, tenemos varios métodos, el más sencillo es el siguiente que lo he implementado usando jQuery:

Leer más » 5 Comentarios

Manejo de listas select con jQuery (ComboBox/DropDownList)

jQuery es un framework cuyo uso se hace casi inevitable para todos aquellos que usamos de forma intensiva JavaScript. El manejo de las listas de elementos en un sitio web, con la etiqueta <select>, es algo básico en el manejo de datos presentados en formularios.

De cara a validar, gestionar, editar, insertar… es decir, hacer todo tipo de operaciones con los datos en el cliente, necesitamos de JavaScript pero su uso es tedioso. jQuery lo hace simple e inmediato. Veamos el caso concreto del manejo del <select>.

Veamos, tenemos el siguiente listado en un sitio, vemos el código directamente en HTML:

<select id="miselect">
 <option value="1">Ubuntu</option>
 <option value="2">Fedora</option>
 <option value="3">Red Hat</option>
 <option value="4">Debian</option>
</select>

Para cada elemento tenemos dos datos:

  • El texto que se muestra: suele ser algo visible para el humano, un nombre de distribución en este caso
  • El valor: suele ser un identificador único, en este caso es una referencia ficticia a una tabla de distribuciones

Comencemos a tratarlo.

Seleccionar el elemento

La sintaxis de los selectores de jQuery está basada en la de CSS. En este caso elegir el <select> dentro del DOM del documento sería como sigue:

$("#miselect")

Obtener el valor del ítem seleccionado

Sobre el selector aplicamos la función val():

Leer más » 35 Comentarios

Lo mejor de mi timeline del 17 al 23 de marzo

  • @tuXapuntes Spotify de forma nativa en GNU/Linux
  • @Korso10 Mini servidores en drones, gran idea de The Pirate Bay
  • @fjcarazo Subir archivos con previsualización [jQuery]
  • @iRajneekant Apple contra Nokia, RIM y Motorola por la “poco útil” Nano-SIM
  • @ahornero ¿Qué multimonitor en U12.04?
  • @pazsegura Check-in box, se deja ver por todos sitios
  • @emslinux Disponible en Google Play Angry Birds Space.
  • read more

    Leer más » 1 Comentario

    Parámetros opcionales en funciones de JavaScript

    El desarrollo web siempre tiene dos interacciones: la que se produce en el lado del servidor y la que se produce en el lado del cliente. Esta segunda cada vez tiene más relevancia para conseguir una mejor experiencia del usuario y JavaScript es el responsable de ésto.

    JavaScript es una de esas tecnologías que se pensó para abordar pequeños problemas, pero que por cuestiones de compatibilidad y aceleración tecnológica, se ha convertido en una tecnología versátil a la vez que necesaria para poder afrontar las exigencias de la actualidad.

    En lenguajes como PHP, podemos hacer uso de parámetros opcionales (aquí explicaba su uso al hablar de cómo podíamos imitar la sobrecarga de funciones en el curso de PHP orientado a objetos), por ejemplo:

    function crearPersona($nombre = "")

    Y sus respectivas llamadas:

    crearPersona("Javier");
    crearPersona();

    Sin embargo, en JavaScript no tenemos esta posibilidad, aunque al igual que ocurría con la sobrecarga de funciones en PHP, podemos imitarlo. Veamos cómo.

    Leer más » 4 Comentarios

    “f.easing e.animatedproperties this.prop is not a function” arreglado

    Hace no mucho, Alberto Hornero y yo, comenzamos un proyecto nuevo junto con otro amigo, Antonio Sánchez, llamado Red de Autores. La idea básica era crear una red de blogs gratuitos, sobre los que añadir un componente social. El proyecto es bastante joven, pero por ahora no podemos quejarnos de la aceptación.

    Logo Red de Autores

    El componente social lo pone BuddyPress, uno de los plugins más radicales que he conocido para WordPress, ya que introduce gran cantidad de características y básicamente permite hacer una pequeña red social en el sitio.

    Adaptamos un tema, montamos todo y como normalmente ocurre con WordPress, todo perfecto sin tener que adentrarnos demasiado en el código, ni tener que dedicarle más tiempo del estrictamente necesario.

    Sin embargo, cuando actualizamos a WordPress 3.2.1 comenzó a surgir un problema, había elementos que no se estiraban y aparte de los defectos estéticos, la consola de JavaScript se quedaba tan bloqueada, que acciones tan necesarias como comunes (por ejemplo subir una imagen) no podían efectuarse fácilmente.

    Leer más » 2 Comentarios

    8 métodos de jQuery que deberías conocer

    Si trabajas o piensas trabajar a diario con este fantástico framework de JavaScript que es jQuery, más que probablemente te interese leerte esta entrada donde explicamos 8 métodos básicos de jQuery que quizás no conozcas, pero que sin lugar a dudas, deberías conocer. Esta entrada es una traducción y adaptación del original en inglés aparecido en Queness.

    1. data()

    El método data nos permite manejar datos de cualquier elemento del DOM de una forma segura, evitando referencias circulares y los efectos sobre la memoria de las mismas. Veamos un ejemplo:

    <div data-type="page" data-hidden="true" data-options='{"name":"John"}'></div>
    $("div").data("role") === "page";
    $("div").data("hidden") === true;
    $("div").data("options").name === "John";

    O lo que es lo mismo:

    $("div").data("role", "page");
    $("div").data("hidden", "true");
    $("div").data("role", {name: "John"});

    Referencia completa en la documentación jQuery de data()

    2. stop( [limpiarCola ], [saltarAlFinal] )

    El método permite parar, la animación que está actualmente en ejecución. Es verdaderamente útil cuando manejamos imágenes.

    Veamos un ejemplo de llamada:

    $(this).find('img').stop(true, true).fadeOut();

    Referencia completa en la documentación jQuery de stop()

    3. toggleClass()

    Permite conmutar clases, de forma, que si el elemento tiene ya la clase, la elimina y viceversa. El siguiente código:

    $('#home').toggleClass('active');

    Hace exactamente lo mismo que este:

    if ($('#home').hasClass('active')) {     $('#home').removeClass('active'); } else {     $('#home').addClass('active'); } read more

    Leer más » 2 Comentarios

    Pantalla de espera en peticiones AJAX con jQuery

    Cuando trabajamos con aplicaciones que tienen interfaces web, sin lugar a dudas, la experiencia de usuario mejora enormemente si hacemos uso de tecnologías como AJAX que nos permiten transmisiones y recepciones asíncronas.

    No se fuerzan cambios ni refrescos de pantalla y por lo tanto, la experiencia del usuario es más continua y más parecida a cómo sería en un interfaz de escritorio. Sin embargo, este tipo de tecnologías tiene un problema: si no controlamos los eventos del usuario mientras existe una carga de datos, es posible que se generen comportamientos erráticos.

    Pongamos un ejemplo. Tenemos un sistema que carga una serie de datos de forma dinámica con AJAX a través de un formulario. Cuando el usuario hace la búsqueda, la carga se realiza y se le muestra. Si la carga tarda “mucho” y no se bloquea de alguna forma la posibilidad de seguir buscando, pueden aparecer resultados incoherentes (de búsquedas anteriores) o directamente fallar el sistema por sobrecarga.

    ¿Cuál es la solución más popular para este tipo de problemas? Utilizar una pantalla de espera. Vamos a explicar cómo hacerlo con jQuery en muy pocos pasos.

    Introducción

    La solución que vamos a usar, utilizará un div no opaco de color gris, que ocupará la pantalla al completo cuando se produzca una petición de tipo AJAX. El div incorporará una animación en la parte central.

    El div

    Deberemos situar un div que por defecto se encuentre escondido, hide, justo al comienzo de nuestro código del body. Contendrá una imagen de carga, que podréis generar fácilmente con alguna aplicación web como AJAXLoad.

    El código será el siguiente:

    <div id="div_carga">
    <img id="cargador" src="./images/ajax-loader.gif"/>
    </div>

    El estilo del div

    Para que el div ocupe la pantalla completa y la imagen se quede en medio, deberemos establecer las siguientes reglas CSS:

    #div_carga{
        position:absolute;
        top:0;
        left:0;
        width:100%;
        height:100%;
    	background: url(images/gris.png) repeat;
    	display:none;
    	z-index:1;
    }
    
    #cargador{
        position:absolute;
        top:50%;
        left: 50%;
        margin-top: -25px;
        margin-left: -25px;
    }

    El fichero gris.png que aparece, es un fichero con una imagen en PNG de color gris con transparencias.


    El código jQuery

    Finalmente tenemos que introducir el código que se encargue de hacer que en cuanto se produce una petición AJAX el div se muestre y que cuando finalice, se oculte. Podríamos hacerlo para cada operación, pero es mucho más cómodo usar las funciones:

    ¿Cómo? Como se muestra a continuación.

    $('#div_carga') .hide() .ajaxStart(function() { $(this).show(); }) .ajaxStop(function() { $(this).hide(); }) ; read more

    Leer más » 12 Comentarios

    Comprimir y optimizar código CSS

    Cada vez que accedemos a un sitio web nos descargamos, entre otras cosas, sus hojas de estilos. Aunque para trabajar con ellas lo ideal es tenerlas bien estructuradas y comentadas, al navegador le da igual interpretar una hoja de estilos bien espaciada y comentada, que su equivalente comprimido.

    Es decir, si usamos el fuente CSS sobre el que trabajamos como fichero de producción estamos cometiendo un fallo: estamos transmitiendo información de forma innecesaria en muchas ocasiones (nosotros mismos lo hacemos ahora mismo en Linux Hispano). Es algo similar a lo que ocurre con jQuery y sus dos versiones: read more

    Leer más » 5 Comentarios

    Interfaces web estilo Windows 7 y Aero con jQuery

    Posiblemente no sea el entorno gráfico que todos deseáis ver a diario en vuestro equipo, pero sí es cierto que, al menos para mí, es de lo mejor de Windows Vista y Windows 7, Aero. ¿Por qué hablamos del entorno de estos sistemas hoy aquí?

    Porque existe un plugin para jQuery, llamado Windows 7 UI and Windows Aero for websites que nos proporciona las herramientas para crear sitios web con este entorno gráfico. Es el sucesor de un plugin de jQuery anterior que quizás conozcáis: Ventana Aero para jQuery. Es un ejemplo más de la potencia del framework jQuery, que no para de sorprenderme gracias a los complementos que existen para él. read more

    Leer más » 8 Comentarios