SlideShare a Scribd company logo
1 of 67
Download to read offline
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.1. MODELO DE GESTIÓN DE EVENTOS
Evento
• Mecanismo que se acciona cuando el usuario realiza un cambio sobre la página
web.
• Capturar un evento es programar una acción para que se realice una tarea.
• El encargado de gestionar los eventos es el DOM (Document Object Model).
Manejador
• Palabra reservada que indica la acción que se va a manejar. Por ejempo, en el
evento click el manejador es onClick.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.1. MODELO DE GESTIÓN DE EVENTOS
Eventos de ratón
LA U R A F O LG A D O G A LA CH E
Ratón
Evento Manejador Descripción
Click onclick Cuando pulsamos el botón derecho del ratón.
Dblclick ondblclick Cuando hacemos doble click el botón derechodel ratón.
Mousedown onmousedown Cuando pulsamos un botón del ratón.
Mouseup onmouseup Cuando soltamos un botón del ratón que previamenteteníamos pulsado.
Mouseout onmouseout
Cuando el puntero del ratón esta dentrode un elementoy estepuntero es desplazado
fuera del elemento.
Mouseover onmouseover
Cuando el puntero del ratón se encuentrafuerade un elemento, y estese desplaza
hacia el interior.
Mousemove onmousemove
Cuando el puntero del ratón se encuentradentrodeun elemento. Es importante
señalar que esteeventose producirácontinuamenteunavez tras otramientras el
punterodel ratón permanezcadentrodel elemento.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.1. MODELO DE GESTIÓN DE EVENTOS
Eventos de teclado
LA U R A F O LG A D O G A LA CH E
Teclado
Evento Manejador Descripción
Keydown onkeydown
Cuando pulsamos una tecla del teclado.Si mantenemos pulsada una tecla de
forma continua,el evento se produce una y otra vez hasta que soltemos la
misma
Keypress onkeypress
Cuandopulsamos una tecla de un carácteralfanumérico (el evento no se
produce si pulsamos enter,la barra espaciadora,etc…).En el caso de mantener
una tecla pulsada,el evento se produce de forma continuada.
Keyup onkeyup Cuando soltamos una tecla.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.1. MODELO DE GESTIÓN DE EVENTOS
Eventos HTML
LA U R A F O LG A D O G A LA CH E
HTML
Evento Manejador Descripción
Load onload
El evento load hace referencia a la carga de distintas partes de la página. Este
se produce en el objeto Window cuando la página se ha cargado por completo.
En el elemento <img>actúa cuando la imagen se ha cargado.En el elemento
<object> se acciona al cargar el objeto completo.
Unload onunload
El evento unload actúa sobre el objeto Window cuando la pagina ha
desaparecido porcompleto (porejemplo,si pulsamos el aspa cerrando la
ventana del navegador).También se acciona en el elemento <object> cuando
desaparece el objeto.
Abort onabort
Este evento se produce cuando el usuario detiene la descarga de un elemento
antes de que haya terminado,actúa sobre un elemento <object>.
Error onerror
El evento errorse produce en el objeto Window cuando se ha producido un error
en JavaScript.En el elemento <img> cuando la imagenno se ha podido cargar
por completo yen el elemento <object>en el caso de que un elemento no se
haya cargado correctamente.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.1. MODELO DE GESTIÓN DE EVENTOS
Eventos HTML
LA U R A F O LG A D O G A LA CH E
HTML
Evento Manejador Descripción
Change onchange
Cuando los cuadros de texto <input> y<textarea>pierden el foco yel contenido
que tenían ha variado.Cuando un elemento <select>cambia de valor.
Submit onsubmit Cuando pulsamos sobre unbotónde tipo submit en un formulario
Reset onreset Cuando pulsamos sobre unbotónde tipo reset en un formulario.
Error onerror
El evento errorse produce en el objeto Window cuando se ha producido un error
en JavaScript.En el elemento <img> cuando la imagenno se ha podido cargar
por completo yen el elemento <object>en el caso de que un elemento no se
haya cargado correctamente.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.1. MODELO DE GESTIÓN DE EVENTOS
Eventos HTML
LA U R A F O LG A D O G A LA CH E
HTML
Evento Manejador Descripción
Resize onresize Cuando redimensionamos el navegador,actúa sobre el objeto Window.
Scroll onscroll Cuando varía la posiciónde la barra de scroll en cualquierelemento que la tenga
Focus onfocus
Cuando unelemento obtiene el foco.En elementos button,input,label,select,
textarea,body.
Blur onblur
Cuando unelemento pierde el foco.En elementos button,input,label,select,
textarea,body.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Eventos DOM
LA U R A F O LG A D O G A LA CH E
DOM
Evento Descripción
DOMSubtreeModified
cuando añadimos o eliminamos nodos en el subárbol de un elemento o
documento.
DOMNodeInserted cuando añadimos un nodo hijo a un nodo padre.
DOMNodeRemoved cuando eliminamos un nodo que tiene nodo padre.
DOMNodeRemovedFromDocument cuando eliminamos un nodo del documento.
DOMNodeInsertedIntoDocument
cuando añadimos un nodo al documento.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Elementos de un formulario:
§ <html>
§ <head>
§ <title>Mi formulario</title>
§ </head>
§ <body>
§ <h3>Formulario</h3>
§ <form action= "pagina.php" method="post">
§ //Elementos
§ </form>
§ </body>
§ </html>
§ Action: es la url de la página a la que redirige el formulario.
§ Method: puede ser POST o GET, dependiendo del enmascaramiento de los datos enviados.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Elementos de un formulario
LA U R A F O LG A D O G A LA CH E
<form>
Propiedad Descripción
acceptCharset Ajusta o devuelveel valordelatributo accept-charseten un formulario.
action Ajusta o devuelveel valordelatributo Action en un formulario.
enctype Ajusta o devuelveel valordelatributo enctypeen un formulario.
length Devuelve el número de elementos de un formulario.
method Ajusta o devuelveel valordelatributo method enun formulario.
name Ajusta o devuelveel valordelatributo name enun formulario.
target Ajusta o devuelveel valordelatributo targeten un formulario.
Método Descripción
reset() Resetea un formulario.
submit() Envía un formulario.
form.elements[]
• Devuelve un array con todos los input de un formulario.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Elementos de un formulario
LA U R A F O LG A D O G A LA CH E
<input>
Propiedad Descripción
Type
Puede ser, a su vez:
• Text (cuadro de texto).
• Password (cuadro de contraseña).
• Checkbox (casilla de verificación).
• radio (opción de entre dos o más).
• Submit (botón de envío del formulario).
• Reset (botón de vaciado de campos).
• File (botón para buscar ficheros).
• Hidden (campo oculto para,el usuario no lo visualiza en el formulario)
• Image (botón de imagen en el formulario).
• Button (botón del formulario).
Name
Asigna un nombre al elemento.Es necesario para que el servidor pueda
trabajar con él.
Value Inicializa el valordel elemento.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Elementos de un formulario
LA U R A F O LG A D O G A LA CH E
<input>
Propiedad Descripción
Size
Tamaño inicial. En campos text y password se refiere al número de
caracteres.
Maxlenght Número máximo de caracteres que pueden contener text y password.
Checked
Para elementos checkbox y radio. Indica si el checkbox está marcado; o
cuál de los botones de radio está pulsado.
Disabled El elemento aparece deshabilitado. El dato no se envía al servidor.
Readonly
Bloquea el contenido de control: el valor del elemento no se puede
modificar (solo lectura).
Src
Solo se utiliza para asignar la url de una imagen que se colocará en como
botón.
Alt
Descripción del elemento, que se visualiza si nos ponemos con el ratón
sobr él.
Required Indica si el campo debe ser completado antes de enviar el formulario.
Método Descripción
select()
Seleccionael
contenido de un
campo de texto.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Cuadro de texto. Ejemplo:
§ < input type=”text" name=”nombre" />
Cuadro de texto. Ejemplo:
§ < input type=”password" name=”contrasena” />
Campo oculto. Ejemplo:
§ < input type=”hidden" name=”campoOculto” value=“valor”/>
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Casilla de verificación. Ejemplo:
§ <p>Frutas</p>
§ <input name=“fresa” type=“checkbox” value=“fresa”/>Fresa<br/>
§ <input name=“platano” type=“checkbox” value=“platano”/>Plátano <br/>
§ <input name=“manzana” type=“checkbox” value=“manzana”/>Manzana <br/>
Radio button. Ejemplo:
§ <p>Frutas</p>
§ <input name=“fruta” type=“radio” value=“fresa”/>Fresa<br/>
§ <input name=“fruta” type=“radio” value=“platano”/>Plátano <br/>
§ <input name=“fruta” type=“radio” value=“manzana”/>Manzana<br/>
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Botón de envío. Ejemplo:
§ <input name=“enviar” type=“submit” value=“Enviar formulario”/>
Botón de reset. Ejemplo:
§ <input name=“enviar” type=“reset” value=“Borrar formulario”/>
Botón de imagen. Ejemplo:
§ <input name=“enviar” type=“image” src=“imagen.jpg”/>
Botón. Ejemplo:
§ <input name=“enviar” type=“button” value=“Botón de prueba”/>
Selector de ficheros. Ejemplo:
§ Fichero adjunto: <input type=“file” name=“fichero” />
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Elementos de un formulario
LA U R A F O LG A D O G A LA CH E
<label>
Propiedad Descripción
for Indica a qué otro elemento del formulario está asociada.
Label. Ejemplo:
<label for =“nombre”>Nombre</label>
<input type=“text” name=“nombre” />
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Elementos de un formulario
LA U R A F O LG A D O G A LA CH E
<textarea>
Propiedad Descripción
Name Asigna un nombre al elemento.Es necesario para que el servidor pueda trabajarcon él.
Rows Numero de líneas del textarea.
Cols Ancho del textarea.
Maxlenght Número máximo de caracteres que puedencontenertext ypassword.
Checked
Para elementos checkbox yradio.Indica si el checkbox está marcado;o cuál de los botones de
radio está pulsado.
Disabled El elemento aparece deshabilitado.El dato no se envía al servidor.
Readonly Bloquea el contenido de control:el valor del elemento no se puede modificar(solo lectura).
Required Indica si el campo debe ser completado antes de enviarel formulario.
Textarea. Ejemplo:
<textarea name="comentarios" rows="4" cols="30" ></textarea>
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Elementos de un formulario
LA U R A F O LG A D O G A LA CH E
<select> y <option>
Propiedad Descripción
Name Asigna un nombre al elemento.Es necesario para que el servidor pueda trabajarcon él.
Disabled El elemento aparece deshabilitado.El dato no se envía al servidor.
Multiple Permite marcarmás de una fila visible.Requiere del atributo size.
Size En caso de que múltiple esté marcado,muestra cuántas filas estarán visibles.
Required Indica si el campo debe ser completado antes de enviarel formulario.
Dentro del elemento <select> se encuentra la etiqueta <option> con el campo value para
almacenar el valor y en su interior lo que se visualizará.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Elementos de un formulario
LA U R A F O LG A D O G A LA CH E
<fieldset> y <legend>
Propiedad Descripción
Name (Fieldset) Asigna un nombre al elemento.
Align (Legend) Permite elegirla alineación del texto del legend sobre el fieldset.
Fieldset se utiliza para agrupar elementos del formulario mediante una línea y permite asignar
un título para esta agrupación gracias a la etiqueta <legend>
Fieldset. Ejemplo:
<form>
<fieldset>
<legend>Datos:</legend>
Nombre: <input type="text" size="30"><br>
Email: <input type="text" size="30"><br>
</fieldset>
</form>
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
Desplegable. Ejemplo:
§ <p>Comida:</p>
§ <select name="comida”>
§ <option value="pasta">Pasta</option>
§ <option value="carne">Carne</option>
§ <option value="pescado">Pescado</option>
§ <option value="postre">Postre</option>
§ </select>
Desplegable con elección múltiple. Ejemplo:
§ <p>Comida:</p>
§ <select multiple size=“3”name="comida[]”>
§ <option value="pasta">Pasta</option>
§ <option value="carne">Carne</option>
§ <option value="pescado">Pescado</option>
§ <option value="postre">Postre</option>
§ </select>
LA U R A F O LG A D O G A LA CH E
Ejemplode formulario:
<html>
<head>
<title>Formulario</title>
</head>
<body>
<h1>Formulario</h1>
<form action="procesar.php"method="post">
<table>
<tr><td>Nombre: </td><td><inputtype="text"name="nombre"/></td></tr>
<tr><td>Password: </td><td><inputtype="password"name="psw"/></td></tr>
<tr>
<td>Sexo : </td>
<td>
<inputtype="radio"name="sexo"value="H"checked />Hombre
<inputtype="radio"name="sexo"value="M"/>Mujer
</td>
</tr>
<tr><td>Mayor de 18:</td><td><inputtype="checkbox"name="mayor"checked/></td></tr>
<tr><td>Fichero: </td><td><inputtype="file"name="upfile" /></td></tr>
<tr><td>Hidden: </td><td><inputtype="hidden"name="escondido"value="sorpresa"/></td></tr>
</table>
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
<tr><td>Comida: </td>
<td>
<selectname="comida">
<option value="pasta">Pasta</option>
<option value="carne">Carne</option>
<option value="pescado">Pescado</option>
<option value="postre">Postre</option>
</select>
</td></tr>
<tr><td>Bebidas: </td>
<td>
<selectmultiplesize="3"name="bebida[]">
<option value="agua">Agua</option>
<option value="vino">Vino</option>
<option value="cerveza">Cerveza</option>
</select>
</td></tr>
</table>
<p>
<inputtype="submit"value="Enviar"/>
<inputtype="reset"value="Borrar"/>
</p>
</form>
</body>
</html>
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
EJERCICIO: u5e1_formulario:
• Prepara un formulario diseñado para almacenar los discos con los que
trabajamos en el ejercicio u4e4_discos. Recuerda qué elementos se
almacenaban, y elije el componente de formulario más adecuado:
• Nombre del disco.
• Grupo de música o cantante.
• Año de publicación.
• Tipo de música (podrá ser “rock”, “pop”, “punk” o “indie”);
• Localización: almacenará un número de estantería.
• Prestado: almacenará un valor booleano. Por defecto será false.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Seleccionar un formulario
• Disponemos del siguiente formulario:
• <form id=“miFormulario” name=“miFormulario” action=“siguiente.php”…>
getElementById()
• var formulario = document.getElementById(“contactar”);
getElementsByTagName()
• var formularios = document.getElementsByTagName(“form”);
• var primerform = formularios[0];
O en una sola línea:
• var primerform = document.getElementsByTagName(“form”)[0];
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Seleccionar un formulario
• Disponemos del siguiente formulario:
• <form id=“miFormulario” name=“miFormulario” action=“siguiente.php”…>
forms[0]
• var formularios = document.forms; //Devuelve un array de formularios
• Var primerform = formularios [0];
O en una sola línea:
• Var formularios = document.forms[0];
forms[“nombre”]
• var formularios = document.forms; //Devuelve un array de formularios
• Var primerform = formularios [“contactar”];
O en una sola línea:
• Var formularios = document.forms[“contactar”];
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
El formulario como contenedor de objetos:
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Selección de objetos de un formulario
• Recuerda que…
LA U R A F O LG A D O G A LA CH E
form.elements[] devuelve
un array con todos los
input de un formulario.
getElementByID()
devuelve un elemento
que tenga un id
determinado.
getElementsByTagName()
devuelve un array de
elementos de un tipo.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Selección de objetos de un formulario
• En este ejemplo:
• <form id=”formularioBusqueda" action=”siguiente.php”>
• <p>
• <input type="text" id="entrada" name="cEntrada">
• <input type="submit" id="enviar" name="enviar" value="Buscar...">
• </p>
• </form>
• Para hacer referencia al input de tipo texto podemos hacerlo mediante:
• document.getElementById("entrada")
• document.formularioBusqueda.cEntrada
• document.formularioBusqueda.elements[0]
• document.forms["formularioBusqueda"].elements["cEntrada"]
• document.forms["formularioBusqueda"].cEntrada
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Objetos input de tipo texto
• Es recomendable utilizar un id igual que el name para poder referirnos a ellos con getElementById.
• Podemos referirnos a cualquiera de sus propiedades para cambiarlas.
• Ejemplo:
• <input type=“text” name=“nombre” id=“nombre”/>
• document.getElementById(“nombre”).value=“Valor nuevo”; //Cambia el valor del texto
Objetos input de tipo checkbox
• La propiedad value es el texto asociado al objeto.
• El formulario solamente envía los datos si el checkbox está marcado.
• Ejemplo:
• <input type=“checkbox” id=“cantidad” name=“cantidad” value=“100”/>
• document.getElementById(“cantidad”).checked=true; //Marca el checked
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Objetos input de tipo radio
• Cuando utilizamos varios radiobuttoncon el mismonombre, se creaun arrayde objetosinputradio.
• Podemos consultar elnúmerode radiobutton con formulario.gruporadio.length;+
• Podemos consultar si un radio button estámarcadocon formulario.gruporadio[num].checked y devolverá trueo false.
• Ejemplo:
• for(var i=0; i<document.formulario.frutas.length;i++){
• if(document.formulario.frutas[i].checked) //Comprueba quees true
• alert(document.formulario.ac tores [i].value);
• }
Objetos select
• La propiedadselectedIndex devuelveel índice de laopción queha sidoseleccionada.
• Cada opción tienedos propiedades accesibles: texty value queindican el valorvisible y elvalorinterno,respectivamente.
• Ejemplo:
• <option value=“ZA”>Zamora</option>
• formulario.nombreCampoSelect.options[n].text; //DevuelveZamora
• formulario.nombreCampoSelect.options[n].value;//Devuelve ZA
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Usando this
• Utilizamos this para hacer referencia al objeto que llama a un evento.
• Ejemplo:
• <input type=“text” name=“nombre” id=“nombre” value=“Laura”
onclick=“identificar(this)”/>
• function identificar(objeto){
• var nombre=objeto.name;
• var valor=objeto.value;
• var id=objeto.id;
• var tipo=objeto.type;
• alert(“Datos del objeto: “+nombre+” – “+valor+” – “+id+” – “+tipo);
• }
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Eventos
• Los eventos se ejecutan cuando el usuario interactúa con la página (haciendo clic, pulsando
una tecla, moviendo el ratón, etc.) o bien se tratan de eventos no relacionados con acciones del
usuario (como onload, que sucede cuando la página se carga).
• Un poco de historia:
LA U R A F O LG A D O G A LA CH E
Incompatibilidades denavegadores: habíaque comprobar si los métodos eran soportados.
Modelode registros deeventos en línea: seañadecomoatributoa laetiqueta html:
<a href=“…” onClick=accion/>
Modelode registrodeeventos tradicional: los eventosson unapropiedadde los elementos:
elemento.onclick=accion;
Modeloavanzado de registrodeeventos del W3C: utilizaaddListener();
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Modelo de registro de eventos en línea
• El evento se añade como atributo de una etiquetahtml.
• Se ejecuta primero el script y luego la acción por defecto.
• Ejemplos:
• 1) <a href=“siguiente.html” onclick=“alert(‘Has pulsado en el enlace’)”>Pulsa aquí</a>
• 2) <a href=“siguiente.html” onclick=“alertar()”>Pulsa aquí</a>
• function alertar(){alert(“Has pulsado el enlace”);}
• Para evitar que el navegador ejecute acción por defecto:
• <a href=“siguiente.html” onclick=“alertar(); return false;”>Pulsa aquí</a>
De este modo no ejecutaría la acción por defecto: redirigir a la página siguiente.html.
• Para preguntar si ejecutar o no la acción por defecto:
• <a href=“siguiente.html” onclick=“return preguntar()”>Pulsa aquí</a>
• function preguntar(){return confirm(“¿Desea realmente ir a esa dirección?”);}
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
¿Por qué no utilizar el modelo de registro de eventos en línea?
LA U R A F O LG A D O G A LA CH E
No separa la programación de
la estructura.
Si la función redirige a una
página no se ejecutan las
demás tareas.
Al ejecutar la acción por
defecto se pueden perder los
objetos que hay en memoria
(ej. Al cambiar de página).
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Modelo de registro de eventos tradicional
• El evento se convierte en una propiedad del elemento:
• Ejemplos:
• elemento.onclick = acción;
• function accion() {…}
• Para eliminar un gestor de eventos de un elemento:
• elemento.onclick=null;
• Para llamar al gestor de eventos cuando queramos:
• elemento.onclick();
• No usamos paréntesis, porque no necesitamos que devuelva el resultado.
• elemento.onclick=accion(); à elemento.onclick=accion;
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Modelo de registro de eventos avanzado del W3C
• Utiliza un evento addEventListener() con tres argumentos:
• Tipo de evento.
• Función a ejecutar.
• Valor booleano para elegir la fase de captura (true) o burbujeo (false).
• elemento.addEventListener('evento', función, false|true)
• Ej: document.getElementById("mienlace").addEventListener('click',alertar,false);
• ¡¡Ojo!! No lleva “on” delante del nombre del evento.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Modelo de registro de eventos avanzado del W3C
• Eliminar un evento de un elemento:
• elemento.removeEventListener();
• Crear más de un evento para el mismo elemento:
• document.getElementById("mienlace").addEventListener('click',alertar,false);
• document.getElementById("mienlace").addEventListener('click',avisar,false);
• document.getElementById("mienlace").addEventListener('click',chequear,false);
• Crear un evento anónimo (no está asociado a ninguna función):
• element.addEventListener('click', function () {
• this.style.backgroundColor = '#cc0000'; }, false)
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO
Modelo de registro de eventos avanzado según Microsoft
• Utiliza un evento attachEvent() con tres argumentos:
• Tipo de evento.
• Función a ejecutar.
• ¡¡Ojo!! En este modelo de registro de eventos se utiliza “on” delante del nombre.
• elemento.attachEvent('evento', función)
• Ej: document.getElementById("mienlace").attachEvent(’onclick',alertar);
• Eliminar un evento de un elemento:
• elemento.detachEvent(‘onclick’,accion);
• Crear más de un evento para el mismo elemento:
• elemento.attachEvent('onclick', hacerUnaCosa);
• elemento.attachEvent('onclick', hacerOtraCosa);
LA U R A F O LG A D O G A LA CH E
EJERCICIO: u5e2_parejas:
• Vas a crear un juego que consiste en encontrar parejas en 12 cartas con 6 parejas
de los personajes de los Simpson. El juego consistirá en lo siguiente:
• La aplicación deberá tener una tabla con 3 filas y cuatro columnas de un color.
Además habrá un cuadro de texto con el valor 0 pero no modificable.
• Cuando el usuario haga clic sobre una celda, se mostrará una imagen.
• Cuando el usuario haga clic sobre otra celda, se mostrará otra imagen.
• Si las dos imágenes son iguales, se cambiará el color de la celda y se añadirá 1
al cuadro de texto.
• Si las dos imágenes son diferentes, se ocultarán mostrando nuevamente el
color inicial.
• En primer lugar, crea un esquema en una hoja con el arbol DOM del documento
html y en otra indica los métodos que vas a crear asociados a qué evento.
• Trata de utilizar el menor número de variables posibles: utiliza las propiedades de
los elementos para cambiar su comportamiento.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.3. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS
Validación de formularios
• Debemos indicar, en la etiqueta del formulario, que realice la validación:
• <form action="URL" method="post" name="formValidado" onsubmit="return validar()”>
• …
• </form>
• Podemos hacerlo con un AddEventListener (mejor):
• document.getElementById("enviar").addEventListener('click',validar,false);
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS
Validación de formularios
• En primer lugar definimos unafunción “iniciar”queseva a cargar únicamentecuandoel documentohayasidocargado
completamente.
• window.onload=iniciar;
• function iniciar() { document.getElementById("enviar").addEventListener('click',validar,false); }
• La función validar recibeel eventopor defectoasociadoal botón enviar. Validamos cada apartado llamandoa las
funciones correspondientes:
• function validar(eventopordefecto){
• if (validarcampostexto(this)&& validarMatricula() && validarProvincia() &&
• confirm("¿Deseas enviar el formulario?"))
• return true;
• else{
• eventopordefecto.preventDefault(); //Cancelamosel enventodeenvíopor defectoasignadoal botón
• return false; // Salimos dela función devolviendofalse.
• }
• }
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS
Valida un campode texto:
function validacion(){
valor =
document.getElementById("campo").value;
if( valor == “” || valor.length== 0 ){
alert("El camponopuede ser
vacío");
return false;
}
return true;
}
Valida todos los campos de textodel formulario:
var formulario= objeto.form;
for (var i=0; i<formulario.elements.length; i++)
{
if (formulario.elements[i].type== "text" &&
formulario.elements[i].value=="")
{
alert("El campo:
"+formulario.elements[i].name+" nopuede
estar en blanco");
formulario.elements[i].className="error;
formulario.elements[i].focus();
return false;
}
LA U R A F O LG A D O G A LA CH E
Validación de un campo como obligatorio:
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS
Ejemplo1 (teléfono):
function validaNum() {
valor =
document.getElementById("telefono").value;
if( isNaN(valor) ) {
alert("El campotienequeser
numérico");
return false;
}
return true;
}
Ejemplo 2 (edad):
if (formulario.elements[i].id=="edad"){
if (isNaN(formulario.elements[i].value) ||
formulario.elements[i].value<0 ||
formulario.elements[i].value>105) {
alert("El campo: "+formulario.elements[i].name+"
posee valores incorrectos olaedad <0 o
>105");
}
LA U R A F O LG A D O G A LA CH E
Validación de un campo de texto como numérico:
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS
Ejemplo:
function validaFecha() {
vardia= document.getElementById("dia").value;
varmes = document.getElementById("mes").value;
varano = document.getElementById("ano").value;
fecha= new Date(ano, mes, dia);
if( !isNaN(fecha) ) {
return false;
}
return true;
}
LA U R A F O LG A D O G A LA CH E
Validación de un campo de fecha:
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS
LA U R A F O LG A D O G A LA CH E
Modificación de la apariencia de un campo erróneo:
Podemos modificar la apariencia de un campo creando en css una clase error:
.error{ border: solid 2px #FF0000; }
Así, cuando un campo sea erróneo, le aplicamos dicha clase.
Ejemplo:
if (formulario.elements[i].type == "text" && formulario.elements[i].value=="") {
alert("El campo: "+formulario.elements[i].name+" no puede estar en blanco");
formulario.elements[i].className="error";
formulario.elements[i].focus();
return false;
}
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS
Ejemplo:
function validaCheck(){
elemento=
document.getElementById("campoCondiciones");
if( !elemento.checked) {
return false;
}
return true;
}
LA U R A F O LG A D O G A LA CH E
Validación de un checkbox:
EJERCICIO: u5e3_formulario2:
• A partir del formulario creado en la actividad 1, realiza las funciones necesarias
para validarlo teniendo en cuenta:
• Nombre del disco: 20 caracteres, obligatorio.
• Grupo de música o cantante: 20 caracteres, obligatorio.
• Año de publicación: 4 caracteres numéricos.
• Tipo de música (podrá ser “rock”, “pop”, “punk” o “indie”): sin comprobación.
• Localización: almacenará un número de estantería: vacío o numérico.
• Prestado: sin comprobación.
• Tendrás que tener en cuenta, además:
• Que utilizarás un método window.onload.
• Que la validación se asignará al formulario mediante un AddEventListener.
• Que los campos nombre del disco y grupo de música se validarán en la misma
función (campo20).
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
EJERCICIO: u5e3_formulario2 - Ampliación:
• Modifica las funciones de tal manera que, en caso de que se produzca un
error en la validación, el campo implicado tenga el reborde rojo, y la etiqueta
que lo acompaña también aparezca de color rojo.
• Para ello deberás crear las clases css necesarias (puedes incluirlas en el
propio html si lo deseas) para que se visualice correctamente.
• Ten en cuenta que si el usuario mete correctamente el nombre, deberá volver
a su color habitual.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES
Expresiones regulares:
• Se utiliza en datos que siguen un patrón concreto.
• Ejemplos de expresiones regulares:
LA U R A F O LG A D O G A LA CH E
Código postal.
Teléfono (sobre
todo con
prefijos...)
DNI.
Tarjeta de
extranjería.
Código de
cuenta del
banco.
Correo
electrónico.
Identificadores
de usuario.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES
Caracteres especiales
LA U R A F O LG A D O G A LA CH E
Car. Descripción Detalle
^ Principiodeentradao línea.
Estecarácter indicaquelas cadenas deberán comenzar por el
siguientecarácter. Si estefuerauna“a” minúsculacomo
indicamos en el puntoanterior laexpresión regular seriasería,
^a.
$ Fin de entradao línea.
Indicaque la cadenadebe terminar por el elementoprecedidoal
dólar.
* El carácter anterior 0 omás veces.
* El carácter anterior 0 omás veces. El asteriscoindicaqueel
carácter anterior sepuede repetir en la cadena0 o más veces.
+ El carácter anterior 1 omás veces.
El símbolomás indicaqueel carácter anterior sepuede repetir
en la cadenauna o más veces.
? El carácter anterior unavez comomáximo.
El símbolointerrogaciónindicaqueel carácter anterior sepuede
repetir en la cadenacero o unavez
. Cualquier carácter individual.
El símbolopuntoindicaque puede haber cualquier carácter
individual salvo el de saltode línea.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES
Caracteres especiales
LA U R A F O LG A D O G A LA CH E
Car. Descripción Detalle
x|y X ó y La barra vertical indicaquepuede ser el carácter x o el y.
{n} n veces el carácter anterior
El carácter anterior alas llaves tieneque aparecer exactamente
n veces.
{n,m} Entren y m veces el carácter anterior
El carácter anterior alas llaves tieneque aparecer comomínimo
n y comomáximom veces.
[abc] Cualquier carácter delos corchetes.
En lacadena puede aparecer cualquier carácter que este
incluidoen los corchetes.
[^abc] Un carácter que noestéen los corchetes
En lacadena pueden aparecer todos los caracteres quenoestén
incluidos en los corchetes.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES
Caracteres especiales
LA U R A F O LG A D O G A LA CH E
Car. Descripción Detalle
b Fin de palabra Este símbolo indica que tiene que haber un fin de palabra o retorno de carro.
B No fin de palabra El símbolo B indica cualquiera que no sea un límite de palabra.
d Cualquier carácter dígito Este símboloindica que puede haber cualquier carácter numérico, de 0 a 9.
D Carácter que no es dígito Este símbolo indica que puede haber cualquier carácter siempre que no sea numérico.
f Salto de página Este símbolo indica que tiene que haber un salto de página
n Salto de línea Este símbolo indica que tiene que haber un salto de línea.
s Cualquier espacio en blanco
Este símbolo indica que tiene que haber un carácter individual de espacio en blanco: espacios,
tabulaciones, saltos de página o saltos de línea.
S Cualquier carácter que no sea blanco
Este símbolo indica que tiene que haber cualquier carácter individual que no sea un espacio en
blanco.
t Cualquier tabulación Este símbolo indica que tiene que haber cualquier tabulación.
w Cualquier alfanumérico Este símbolo indica que puede haber cualquier carácter alfanumérico.
W Cualquier carácter no alfanumérico Este símbolo indica que puede haber cualquier carácter que no sea alfanumérico.
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES
Ejemplo:
§ function validaDNI(){
§ valor = document.getElementById("dni").value;
§ varletras = ['T','R','W','A','G','M','Y','F’,'P','D','X', 'B','N','J','Z','S','Q','V’,'H','L','C','K','E’,'T'];
§ if( !(/^d{8}[A-Z]$/.test(valor)) ){ return false; }
§ if(valor.charAt(8) != letras[(valor.substring(0, 8))%23])
§ { return false; }
§ return true;
§ }
LA U R A F O LG A D O G A LA CH E
Validación de un DNI:
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES
Ejemplo:
§ function validaEmail(){
§ valor =document.getElementById("campo").value;
§ if(!(/w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)/.test(valor)) ) {
§ return false;
§ }
§ return true;
§ }
LA U R A F O LG A D O G A LA CH E
Validación de un correo electrónico:
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES
Ejemplo:
§ function validaTelefono(){
§ valor = document.getElementById("telefono").value;
§ if( !(/^d{9}$/.test(valor)) ) {
§ return false;
§ }
§ return true;
§ }
LA U R A F O LG A D O G A LA CH E
Validación de un teléfono:
EJERCICIO: u5e4_expresionesregulares:
• Walter White y Jesse Pinkman tienen que controlar las bolsas de producto azul que
cocinan para distribuir en Alburquerque. Para ello tienen que crear un formulario
que almacene la información de cada bolsa y validarlo teniendo en cuenta lo
siguiente:
• Fecha de creación: obligatorio y con formato dd/mm/aaaa.
• Cocinero: será un nombre en clave formado por dos letras en mayúscula, un
símbolo y cuatro dígitos (ej. WW$1234)
• Destinatario: estará formado por dos o tres letras mayúsculas correspondientes
al estado, un guión bajo, el nombre de la ciudad en minúsculas, dos puntos, y el
código de distrito de 4 digitos (ej. NM_alburquerque:1234).
• Gramos: será un número del 100 al 5000.
• Composición: estará formado por una cantidad en gramos seguida de dos
conjuntos de una o dos letras seguidas o no de un número. (ej. 200gC3OH7)
• Número de cuenta de EEUU: ver diapositiva siguiente:
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES
EJERCICIO: u5e4_expresionesregulares:
• Supongamos que un número de cuenta estadounidense tiene el siguiente formato:
• Dos letras: suponemos que el valor de cada letra es del 1 al 26 (no hay ñ ni ll).
• Dos dígitos: debe corresponderse con la suma de la primera letra y la segunda:
en caso de que sea menor que 10 se pone el 0 delante.
• Un guión.
• Doce dígitos de cuenta.
• Un guión.
• Dos dígitos de control: los dos primeros deben ser la suma de los 6 primeros
dígitos de la cuenta dividido entre 6 y extrayendo solamente su parte entera; y
los dos últimos exactamente igual, pero con los 6 siguientes.
• Si el número está correcto se colocará en un campo de texto al lado del anterior,
pero sin guiones: solamente los números y las letras.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES
Cookie:
• Fichero de texto propio de cada navegador.
• Se almacena en diferentes lugares según el navegador y el sistema operativo.
• Se comenzaron a utilizar para guardar la información de los carritos de compra.
• Son específicas del dominio: un dominio no puede acceder a la cookie de otro
dominio.
• Tienen una fecha de caducidad: como el número de cookies es limitado, el propio
navegador se encargar de borrarlas.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.6. LAS COOKIES
Formato de registro de una cookie:
• Dominio del servidor que creó la cookie.
• Información de si es necesaria una conexión http segura para acceder a la
cookie.
• Trayectoria de las URL que podrán acceder a la cookie.
• Fecha de caducidad de la cookie.
• Nombre de una entrada de datos.
• Cadena de texto asociada a ese nombre de entrada de datos.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.6. LAS COOKIES
• En Windows 7 y Vista:
“Usuarios<Tu_usuario>AppDataR
oamingMozillaFirefoxProfilesserie
_de_números_y_letras.default”.
• En Unix/Linux en la carpeta:
“~/.mozilla/”.
• En Mac OS X: “~/Library/Mozilla/”.
Almacenamiento: “cookies.sqlite” (a partir
de la versión 3 de Firefox). También os
encontraréis con los archivos
“cookies.sqlite-shm”, “cookies.sqlite-wal” y
“cookies-nontor.xml” para poder explorar
(darle formato visual) la base de datos de
cookies.
• En Windows vista o 7:
“Usuarios<Tu_usuario>AppDataL
ocalGoogleChromeUser
DataDefault”.
• En Mac OS X:
“~/Library/Preferences/Opera
Preferences/cookies4.dat”.
• En UNIX y distros Linux:
“~/.config/google-chrome/Default”.
Almacenamiento: “cookies” sin extensión
en formato base de datos.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.6. LAS COOKIES
• Windows Vista y 7:
“Usuarios<Tu_usuario>AppDataR
oamingOperaOpera”.
• Mac OS X: “~/Library/Cookies”.
• Unix y otras distros Linux: “~/.opera/”.
Almacenamiento: “cookies4.dat” en
formato binario.
• Windows Vista y 7:
“Usuarios<Tu_usuario>AppDataR
oamingApple
ComputerSafariCookies”.
• Mac OS X: “~/Library/Cookies”.
• Unix y otras distros Linux: no hay una
versión oficial del navegador de Apple
para Linux.
Almacenamiento: “Cookies.binarycookies”
en formato binario.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.6. LAS COOKIES
•En Windows 7 y Vista:
“Usuarios<Tu_usuario>AppDataRoamingMicrosoftWindowsCookies”.
Almacenamiento: en formato texto, en archivos codificados con extensión .txt.
Opciones de utilización:
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.6. LAS COOKIES
Mantener
opciones de
visualización.
Almacenamiento
de variables.
Seguimiento de
la actividad del
usuario.
Autenticación de
usuarios.
Grabar una cookie:
document.cookie = “nombreCookie = datosCookie
[; expires=horaFormatoGMT] Ej. expires=01 Jan 70 00:00:00 GMT;
[; path=ruta] Ruta actual de nuestra página web.
[; domain=nombreDominio] Por defecto, el que creó la cookie.
[; secure]”Si no se pone, puede ser accesible por cualquier programa que se
ajuste al dominio y path
Borrar una cookie:
Se le asigna una fecha de caducidad anteriora la actual.
Ejemplos:
document.cookie = “usuario=Laura;expires=2 Dec2014,23:59:59GMT”;
document.cookie = “contador=0”;
Si la cookie no existe,la crea; si existe,la sobreescribe.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.6. LAS COOKIES
Función para inicializar una cookie:
function setCookie(cname, cvalue, exdays) {
var d = new Date(); //Se extrae la fecha actual
d.setTime(d.getTime() + (exdays*24*60*60*1000)); //Se le suman los días
indicados por parámetro
var expires = "expires="+d.toUTCString(); //Se pasa a formato GMT
document.cookie = cname + "=" + cvalue + "; " + expires; //Se crea la cookie
}
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.6. LAS COOKIES
Leer una cookie:
var x = document.cookie; //Devuelve toda la cadena con todas las variables;
Leer un valor concreto de la cookie:
function getCookie(cname) {
var name = cname + "="; //Crea una variable con el texto del campo y un igual
var ca = document.cookie.split(';'); //divide la cookie en trozos separados por ;
for(var i=0; i<ca.length; i++) { //Recorre cada trozo de la cookie
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) //Si encuentra el campo buscado
return c.substring(name.length,c.length); //lo devuelve
}
return ""; //Sino devuelve vacío
}
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.6. LAS COOKIES
Comprobar si una cookie está inicializada:
function checkCookie() {
var username=getCookie("username"); //Se extrae el valor (ver función
anterior)
if (username!="") { //Si no está vacío
alert(”Bienvenido de nuevo, " + username); //Se le saluda
}else{ //Sino
username = prompt(”Introduzca sunombre:", ""); //Se le solicita con prompot
if (username != "" && username != null) {
setCookie("username", username, 365); //Se inicializa la variable
}
}
}
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.6. LAS COOKIES
EJERCICIO: u5e5_cookies:
• Crea un fichero que se llame “cookies.js” y que permita trabajar con las cookies de
manera que puedas crear, borrar y consultar una cookie. Consulta los métodos
tratados en clase y recuerda que el método borrar no ha sido creado aún así que
deberás crearlo tú mismo.
• Modifica el archivo anterior u5e4_expresionesregulares de la siguiente manera:
• Cada vez que el usuario trate de enviar el formulario y haya algún error, una
variable contador (almacenada en una cookie) se incrementará.
• El resultado del número de intentos se reflejará en un campo de texto que se
encontrará al final del formulario.
• Si el usuario sale del programa y vuelve a entrar, el campo de texto mostrará el
número almacenado en la cookie.
• Junto al campo de texto habrá un botón que, al pulsarlo, permitirá reiniciar el
valor de la cookie a 0.
LA U R A F O LG A D O G A LA CH E
5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS
5.5. EXPRESIONES REGULARES

More Related Content

What's hot

JavaScript - Chapter 4 - Types and Statements
 JavaScript - Chapter 4 - Types and Statements JavaScript - Chapter 4 - Types and Statements
JavaScript - Chapter 4 - Types and StatementsWebStackAcademy
 
JavaScript - Chapter 6 - Basic Functions
 JavaScript - Chapter 6 - Basic Functions JavaScript - Chapter 6 - Basic Functions
JavaScript - Chapter 6 - Basic FunctionsWebStackAcademy
 
2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguajeLaura Folgado Galache
 
JavaScript - Chapter 14 - Form Handling
 JavaScript - Chapter 14 - Form Handling   JavaScript - Chapter 14 - Form Handling
JavaScript - Chapter 14 - Form Handling WebStackAcademy
 
An Introduction to the DOM
An Introduction to the DOMAn Introduction to the DOM
An Introduction to the DOMMindy McAdams
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An IntroductionManvendra Singh
 
Lab #2: Introduction to Javascript
Lab #2: Introduction to JavascriptLab #2: Introduction to Javascript
Lab #2: Introduction to JavascriptWalid Ashraf
 
JavaScript & Dom Manipulation
JavaScript & Dom ManipulationJavaScript & Dom Manipulation
JavaScript & Dom ManipulationMohammed Arif
 
PHP complete reference with database concepts for beginners
PHP complete reference with database concepts for beginnersPHP complete reference with database concepts for beginners
PHP complete reference with database concepts for beginnersMohammed Mushtaq Ahmed
 
JavaScript - Chapter 9 - TypeConversion and Regular Expressions
 JavaScript - Chapter 9 - TypeConversion and Regular Expressions  JavaScript - Chapter 9 - TypeConversion and Regular Expressions
JavaScript - Chapter 9 - TypeConversion and Regular Expressions WebStackAcademy
 
AngularJS Directives
AngularJS DirectivesAngularJS Directives
AngularJS DirectivesEyal Vardi
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Modelchomas kandar
 

What's hot (20)

Java Script ppt
Java Script pptJava Script ppt
Java Script ppt
 
JavaScript - Chapter 4 - Types and Statements
 JavaScript - Chapter 4 - Types and Statements JavaScript - Chapter 4 - Types and Statements
JavaScript - Chapter 4 - Types and Statements
 
JavaScript - Chapter 6 - Basic Functions
 JavaScript - Chapter 6 - Basic Functions JavaScript - Chapter 6 - Basic Functions
JavaScript - Chapter 6 - Basic Functions
 
2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje
 
JavaScript - Chapter 14 - Form Handling
 JavaScript - Chapter 14 - Form Handling   JavaScript - Chapter 14 - Form Handling
JavaScript - Chapter 14 - Form Handling
 
An Introduction to the DOM
An Introduction to the DOMAn Introduction to the DOM
An Introduction to the DOM
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
 
Lab #2: Introduction to Javascript
Lab #2: Introduction to JavascriptLab #2: Introduction to Javascript
Lab #2: Introduction to Javascript
 
Bootstrap 4 ppt
Bootstrap 4 pptBootstrap 4 ppt
Bootstrap 4 ppt
 
JavaScript & Dom Manipulation
JavaScript & Dom ManipulationJavaScript & Dom Manipulation
JavaScript & Dom Manipulation
 
PHP complete reference with database concepts for beginners
PHP complete reference with database concepts for beginnersPHP complete reference with database concepts for beginners
PHP complete reference with database concepts for beginners
 
jQuery
jQueryjQuery
jQuery
 
JavaScript - Chapter 9 - TypeConversion and Regular Expressions
 JavaScript - Chapter 9 - TypeConversion and Regular Expressions  JavaScript - Chapter 9 - TypeConversion and Regular Expressions
JavaScript - Chapter 9 - TypeConversion and Regular Expressions
 
PHP slides
PHP slidesPHP slides
PHP slides
 
AngularJS Directives
AngularJS DirectivesAngularJS Directives
AngularJS Directives
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
Javascript
JavascriptJavascript
Javascript
 
Object Oriented Javascript
Object Oriented JavascriptObject Oriented Javascript
Object Oriented Javascript
 
Html frames
Html framesHtml frames
Html frames
 
Javascript
JavascriptJavascript
Javascript
 

Similar to 5. Interacción con el usuario: eventos y formularios

Form y container
Form y containerForm y container
Form y containerzeta2015
 
Desarrolla aplicaciones de escritorio con bases de datos
Desarrolla aplicaciones de escritorio con bases de datosDesarrolla aplicaciones de escritorio con bases de datos
Desarrolla aplicaciones de escritorio con bases de datosGabriel Hernadez Meza
 
Desarrolla aplicaciones de escritorio con bases de datos
Desarrolla aplicaciones de escritorio con bases de datosDesarrolla aplicaciones de escritorio con bases de datos
Desarrolla aplicaciones de escritorio con bases de datosEduardo_Staiti11
 
Lenguaje-de-programacion-JavaScript-5.pdf
Lenguaje-de-programacion-JavaScript-5.pdfLenguaje-de-programacion-JavaScript-5.pdf
Lenguaje-de-programacion-JavaScript-5.pdfClaudiaJulianaDulcey
 
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres AltezJ2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres Alteza19987225
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en accessssuser3a82fb
 
Flex Camp 2008. Ricardo Poblete
Flex Camp 2008. Ricardo PobleteFlex Camp 2008. Ricardo Poblete
Flex Camp 2008. Ricardo Pobleteripoblet
 
Guia trabajo visual basic (parte I)
Guia trabajo   visual basic (parte I)Guia trabajo   visual basic (parte I)
Guia trabajo visual basic (parte I)ColegioUpb
 
Visual basic
Visual basicVisual basic
Visual basicjosser96
 
introduccion al desarrollo de aplicaciones en c#
introduccion al desarrollo de aplicaciones en c#introduccion al desarrollo de aplicaciones en c#
introduccion al desarrollo de aplicaciones en c#Eduardo Carrillo
 

Similar to 5. Interacción con el usuario: eventos y formularios (20)

2_JSEventos.pdf
2_JSEventos.pdf2_JSEventos.pdf
2_JSEventos.pdf
 
Form y container
Form y containerForm y container
Form y container
 
Desarrolla aplicaciones de escritorio con bases de datos
Desarrolla aplicaciones de escritorio con bases de datosDesarrolla aplicaciones de escritorio con bases de datos
Desarrolla aplicaciones de escritorio con bases de datos
 
Desarrolla aplicaciones de escritorio con bases de datos
Desarrolla aplicaciones de escritorio con bases de datosDesarrolla aplicaciones de escritorio con bases de datos
Desarrolla aplicaciones de escritorio con bases de datos
 
Lenguaje-de-programacion-JavaScript-5.pdf
Lenguaje-de-programacion-JavaScript-5.pdfLenguaje-de-programacion-JavaScript-5.pdf
Lenguaje-de-programacion-JavaScript-5.pdf
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres AltezJ2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
 
Js
JsJs
Js
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en access
 
desarrolla aplicaciones
desarrolla aplicacionesdesarrolla aplicaciones
desarrolla aplicaciones
 
Manual de delphi 6.0
Manual de delphi 6.0Manual de delphi 6.0
Manual de delphi 6.0
 
Flex Camp 2008. Ricardo Poblete
Flex Camp 2008. Ricardo PobleteFlex Camp 2008. Ricardo Poblete
Flex Camp 2008. Ricardo Poblete
 
visual basic
visual basicvisual basic
visual basic
 
Visual basic cbtis
Visual basic cbtisVisual basic cbtis
Visual basic cbtis
 
office
officeoffice
office
 
Guia trabajo visual basic (parte I)
Guia trabajo   visual basic (parte I)Guia trabajo   visual basic (parte I)
Guia trabajo visual basic (parte I)
 
Visual basic
Visual basicVisual basic
Visual basic
 
introduccion al desarrollo de aplicaciones en c#
introduccion al desarrollo de aplicaciones en c#introduccion al desarrollo de aplicaciones en c#
introduccion al desarrollo de aplicaciones en c#
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
JQuery-Tema 1
JQuery-Tema 1JQuery-Tema 1
JQuery-Tema 1
 

More from Laura Folgado Galache

Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)
Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)
Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)Laura Folgado Galache
 
Guías de estilo web - Diseño de interfaces web (Desarrollo de aplicaciones web)
Guías de estilo web - Diseño de interfaces web (Desarrollo de aplicaciones web)Guías de estilo web - Diseño de interfaces web (Desarrollo de aplicaciones web)
Guías de estilo web - Diseño de interfaces web (Desarrollo de aplicaciones web)Laura Folgado Galache
 
Empaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con NetbeansEmpaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con NetbeansLaura Folgado Galache
 
Repaso de Java Swing usando Rally-Coach
Repaso de Java Swing usando Rally-CoachRepaso de Java Swing usando Rally-Coach
Repaso de Java Swing usando Rally-CoachLaura Folgado Galache
 
Blogs - Creación y participación en comunidades virtuales (CFIE Soria)
Blogs - Creación y participación en comunidades virtuales (CFIE Soria)Blogs - Creación y participación en comunidades virtuales (CFIE Soria)
Blogs - Creación y participación en comunidades virtuales (CFIE Soria)Laura Folgado Galache
 

More from Laura Folgado Galache (16)

Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)
Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)
Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)
 
Guías de estilo web - Diseño de interfaces web (Desarrollo de aplicaciones web)
Guías de estilo web - Diseño de interfaces web (Desarrollo de aplicaciones web)Guías de estilo web - Diseño de interfaces web (Desarrollo de aplicaciones web)
Guías de estilo web - Diseño de interfaces web (Desarrollo de aplicaciones web)
 
Usabilidad web
Usabilidad webUsabilidad web
Usabilidad web
 
Usabilidad móvil
Usabilidad móvilUsabilidad móvil
Usabilidad móvil
 
Empaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con NetbeansEmpaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con Netbeans
 
Tipos de manuales
Tipos de manualesTipos de manuales
Tipos de manuales
 
Ficheros de ayuda en aplicaciones
Ficheros de ayuda en aplicacionesFicheros de ayuda en aplicaciones
Ficheros de ayuda en aplicaciones
 
Distribución de aplicaciones
Distribución de aplicacionesDistribución de aplicaciones
Distribución de aplicaciones
 
Eventos y listeners en Java Swing
Eventos y listeners en Java SwingEventos y listeners en Java Swing
Eventos y listeners en Java Swing
 
Repaso de Java Swing usando Rally-Coach
Repaso de Java Swing usando Rally-CoachRepaso de Java Swing usando Rally-Coach
Repaso de Java Swing usando Rally-Coach
 
Imagen digital
Imagen digitalImagen digital
Imagen digital
 
Video digital
Video digitalVideo digital
Video digital
 
Sonido digital
Sonido digitalSonido digital
Sonido digital
 
Blogs - Creación y participación en comunidades virtuales (CFIE Soria)
Blogs - Creación y participación en comunidades virtuales (CFIE Soria)Blogs - Creación y participación en comunidades virtuales (CFIE Soria)
Blogs - Creación y participación en comunidades virtuales (CFIE Soria)
 
Taller de redes ssociales (Ávila)
Taller de redes ssociales (Ávila)Taller de redes ssociales (Ávila)
Taller de redes ssociales (Ávila)
 
Taller redes sociales (Valladolid)
Taller redes sociales (Valladolid)Taller redes sociales (Valladolid)
Taller redes sociales (Valladolid)
 

Recently uploaded

Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++luzgaray6
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Leonardo J. Caballero G.
 
Presentación de html, css y javascript.
Presentación  de html, css y javascript.Presentación  de html, css y javascript.
Presentación de html, css y javascript.CeteliInmaculada
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxcalzadillasluis134
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOELIAMARYTOVARFLOREZD
 
Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Leonardo J. Caballero G.
 

Recently uploaded (6)

Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024
 
Presentación de html, css y javascript.
Presentación  de html, css y javascript.Presentación  de html, css y javascript.
Presentación de html, css y javascript.
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
 
Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024
 

5. Interacción con el usuario: eventos y formularios

  • 1.
  • 2. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.1. MODELO DE GESTIÓN DE EVENTOS Evento • Mecanismo que se acciona cuando el usuario realiza un cambio sobre la página web. • Capturar un evento es programar una acción para que se realice una tarea. • El encargado de gestionar los eventos es el DOM (Document Object Model). Manejador • Palabra reservada que indica la acción que se va a manejar. Por ejempo, en el evento click el manejador es onClick. LA U R A F O LG A D O G A LA CH E
  • 3. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.1. MODELO DE GESTIÓN DE EVENTOS Eventos de ratón LA U R A F O LG A D O G A LA CH E Ratón Evento Manejador Descripción Click onclick Cuando pulsamos el botón derecho del ratón. Dblclick ondblclick Cuando hacemos doble click el botón derechodel ratón. Mousedown onmousedown Cuando pulsamos un botón del ratón. Mouseup onmouseup Cuando soltamos un botón del ratón que previamenteteníamos pulsado. Mouseout onmouseout Cuando el puntero del ratón esta dentrode un elementoy estepuntero es desplazado fuera del elemento. Mouseover onmouseover Cuando el puntero del ratón se encuentrafuerade un elemento, y estese desplaza hacia el interior. Mousemove onmousemove Cuando el puntero del ratón se encuentradentrodeun elemento. Es importante señalar que esteeventose producirácontinuamenteunavez tras otramientras el punterodel ratón permanezcadentrodel elemento.
  • 4. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.1. MODELO DE GESTIÓN DE EVENTOS Eventos de teclado LA U R A F O LG A D O G A LA CH E Teclado Evento Manejador Descripción Keydown onkeydown Cuando pulsamos una tecla del teclado.Si mantenemos pulsada una tecla de forma continua,el evento se produce una y otra vez hasta que soltemos la misma Keypress onkeypress Cuandopulsamos una tecla de un carácteralfanumérico (el evento no se produce si pulsamos enter,la barra espaciadora,etc…).En el caso de mantener una tecla pulsada,el evento se produce de forma continuada. Keyup onkeyup Cuando soltamos una tecla.
  • 5. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.1. MODELO DE GESTIÓN DE EVENTOS Eventos HTML LA U R A F O LG A D O G A LA CH E HTML Evento Manejador Descripción Load onload El evento load hace referencia a la carga de distintas partes de la página. Este se produce en el objeto Window cuando la página se ha cargado por completo. En el elemento <img>actúa cuando la imagen se ha cargado.En el elemento <object> se acciona al cargar el objeto completo. Unload onunload El evento unload actúa sobre el objeto Window cuando la pagina ha desaparecido porcompleto (porejemplo,si pulsamos el aspa cerrando la ventana del navegador).También se acciona en el elemento <object> cuando desaparece el objeto. Abort onabort Este evento se produce cuando el usuario detiene la descarga de un elemento antes de que haya terminado,actúa sobre un elemento <object>. Error onerror El evento errorse produce en el objeto Window cuando se ha producido un error en JavaScript.En el elemento <img> cuando la imagenno se ha podido cargar por completo yen el elemento <object>en el caso de que un elemento no se haya cargado correctamente.
  • 6. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.1. MODELO DE GESTIÓN DE EVENTOS Eventos HTML LA U R A F O LG A D O G A LA CH E HTML Evento Manejador Descripción Change onchange Cuando los cuadros de texto <input> y<textarea>pierden el foco yel contenido que tenían ha variado.Cuando un elemento <select>cambia de valor. Submit onsubmit Cuando pulsamos sobre unbotónde tipo submit en un formulario Reset onreset Cuando pulsamos sobre unbotónde tipo reset en un formulario. Error onerror El evento errorse produce en el objeto Window cuando se ha producido un error en JavaScript.En el elemento <img> cuando la imagenno se ha podido cargar por completo yen el elemento <object>en el caso de que un elemento no se haya cargado correctamente.
  • 7. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.1. MODELO DE GESTIÓN DE EVENTOS Eventos HTML LA U R A F O LG A D O G A LA CH E HTML Evento Manejador Descripción Resize onresize Cuando redimensionamos el navegador,actúa sobre el objeto Window. Scroll onscroll Cuando varía la posiciónde la barra de scroll en cualquierelemento que la tenga Focus onfocus Cuando unelemento obtiene el foco.En elementos button,input,label,select, textarea,body. Blur onblur Cuando unelemento pierde el foco.En elementos button,input,label,select, textarea,body.
  • 8. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Eventos DOM LA U R A F O LG A D O G A LA CH E DOM Evento Descripción DOMSubtreeModified cuando añadimos o eliminamos nodos en el subárbol de un elemento o documento. DOMNodeInserted cuando añadimos un nodo hijo a un nodo padre. DOMNodeRemoved cuando eliminamos un nodo que tiene nodo padre. DOMNodeRemovedFromDocument cuando eliminamos un nodo del documento. DOMNodeInsertedIntoDocument cuando añadimos un nodo al documento.
  • 9. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Elementos de un formulario: § <html> § <head> § <title>Mi formulario</title> § </head> § <body> § <h3>Formulario</h3> § <form action= "pagina.php" method="post"> § //Elementos § </form> § </body> § </html> § Action: es la url de la página a la que redirige el formulario. § Method: puede ser POST o GET, dependiendo del enmascaramiento de los datos enviados. LA U R A F O LG A D O G A LA CH E
  • 10. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Elementos de un formulario LA U R A F O LG A D O G A LA CH E <form> Propiedad Descripción acceptCharset Ajusta o devuelveel valordelatributo accept-charseten un formulario. action Ajusta o devuelveel valordelatributo Action en un formulario. enctype Ajusta o devuelveel valordelatributo enctypeen un formulario. length Devuelve el número de elementos de un formulario. method Ajusta o devuelveel valordelatributo method enun formulario. name Ajusta o devuelveel valordelatributo name enun formulario. target Ajusta o devuelveel valordelatributo targeten un formulario. Método Descripción reset() Resetea un formulario. submit() Envía un formulario. form.elements[] • Devuelve un array con todos los input de un formulario.
  • 11. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Elementos de un formulario LA U R A F O LG A D O G A LA CH E <input> Propiedad Descripción Type Puede ser, a su vez: • Text (cuadro de texto). • Password (cuadro de contraseña). • Checkbox (casilla de verificación). • radio (opción de entre dos o más). • Submit (botón de envío del formulario). • Reset (botón de vaciado de campos). • File (botón para buscar ficheros). • Hidden (campo oculto para,el usuario no lo visualiza en el formulario) • Image (botón de imagen en el formulario). • Button (botón del formulario). Name Asigna un nombre al elemento.Es necesario para que el servidor pueda trabajar con él. Value Inicializa el valordel elemento.
  • 12. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Elementos de un formulario LA U R A F O LG A D O G A LA CH E <input> Propiedad Descripción Size Tamaño inicial. En campos text y password se refiere al número de caracteres. Maxlenght Número máximo de caracteres que pueden contener text y password. Checked Para elementos checkbox y radio. Indica si el checkbox está marcado; o cuál de los botones de radio está pulsado. Disabled El elemento aparece deshabilitado. El dato no se envía al servidor. Readonly Bloquea el contenido de control: el valor del elemento no se puede modificar (solo lectura). Src Solo se utiliza para asignar la url de una imagen que se colocará en como botón. Alt Descripción del elemento, que se visualiza si nos ponemos con el ratón sobr él. Required Indica si el campo debe ser completado antes de enviar el formulario. Método Descripción select() Seleccionael contenido de un campo de texto.
  • 13. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Cuadro de texto. Ejemplo: § < input type=”text" name=”nombre" /> Cuadro de texto. Ejemplo: § < input type=”password" name=”contrasena” /> Campo oculto. Ejemplo: § < input type=”hidden" name=”campoOculto” value=“valor”/> LA U R A F O LG A D O G A LA CH E
  • 14. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Casilla de verificación. Ejemplo: § <p>Frutas</p> § <input name=“fresa” type=“checkbox” value=“fresa”/>Fresa<br/> § <input name=“platano” type=“checkbox” value=“platano”/>Plátano <br/> § <input name=“manzana” type=“checkbox” value=“manzana”/>Manzana <br/> Radio button. Ejemplo: § <p>Frutas</p> § <input name=“fruta” type=“radio” value=“fresa”/>Fresa<br/> § <input name=“fruta” type=“radio” value=“platano”/>Plátano <br/> § <input name=“fruta” type=“radio” value=“manzana”/>Manzana<br/> LA U R A F O LG A D O G A LA CH E
  • 15. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Botón de envío. Ejemplo: § <input name=“enviar” type=“submit” value=“Enviar formulario”/> Botón de reset. Ejemplo: § <input name=“enviar” type=“reset” value=“Borrar formulario”/> Botón de imagen. Ejemplo: § <input name=“enviar” type=“image” src=“imagen.jpg”/> Botón. Ejemplo: § <input name=“enviar” type=“button” value=“Botón de prueba”/> Selector de ficheros. Ejemplo: § Fichero adjunto: <input type=“file” name=“fichero” /> LA U R A F O LG A D O G A LA CH E
  • 16. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Elementos de un formulario LA U R A F O LG A D O G A LA CH E <label> Propiedad Descripción for Indica a qué otro elemento del formulario está asociada. Label. Ejemplo: <label for =“nombre”>Nombre</label> <input type=“text” name=“nombre” />
  • 17. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Elementos de un formulario LA U R A F O LG A D O G A LA CH E <textarea> Propiedad Descripción Name Asigna un nombre al elemento.Es necesario para que el servidor pueda trabajarcon él. Rows Numero de líneas del textarea. Cols Ancho del textarea. Maxlenght Número máximo de caracteres que puedencontenertext ypassword. Checked Para elementos checkbox yradio.Indica si el checkbox está marcado;o cuál de los botones de radio está pulsado. Disabled El elemento aparece deshabilitado.El dato no se envía al servidor. Readonly Bloquea el contenido de control:el valor del elemento no se puede modificar(solo lectura). Required Indica si el campo debe ser completado antes de enviarel formulario. Textarea. Ejemplo: <textarea name="comentarios" rows="4" cols="30" ></textarea>
  • 18. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Elementos de un formulario LA U R A F O LG A D O G A LA CH E <select> y <option> Propiedad Descripción Name Asigna un nombre al elemento.Es necesario para que el servidor pueda trabajarcon él. Disabled El elemento aparece deshabilitado.El dato no se envía al servidor. Multiple Permite marcarmás de una fila visible.Requiere del atributo size. Size En caso de que múltiple esté marcado,muestra cuántas filas estarán visibles. Required Indica si el campo debe ser completado antes de enviarel formulario. Dentro del elemento <select> se encuentra la etiqueta <option> con el campo value para almacenar el valor y en su interior lo que se visualizará.
  • 19. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Elementos de un formulario LA U R A F O LG A D O G A LA CH E <fieldset> y <legend> Propiedad Descripción Name (Fieldset) Asigna un nombre al elemento. Align (Legend) Permite elegirla alineación del texto del legend sobre el fieldset. Fieldset se utiliza para agrupar elementos del formulario mediante una línea y permite asignar un título para esta agrupación gracias a la etiqueta <legend> Fieldset. Ejemplo: <form> <fieldset> <legend>Datos:</legend> Nombre: <input type="text" size="30"><br> Email: <input type="text" size="30"><br> </fieldset> </form>
  • 20. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO Desplegable. Ejemplo: § <p>Comida:</p> § <select name="comida”> § <option value="pasta">Pasta</option> § <option value="carne">Carne</option> § <option value="pescado">Pescado</option> § <option value="postre">Postre</option> § </select> Desplegable con elección múltiple. Ejemplo: § <p>Comida:</p> § <select multiple size=“3”name="comida[]”> § <option value="pasta">Pasta</option> § <option value="carne">Carne</option> § <option value="pescado">Pescado</option> § <option value="postre">Postre</option> § </select> LA U R A F O LG A D O G A LA CH E
  • 21. Ejemplode formulario: <html> <head> <title>Formulario</title> </head> <body> <h1>Formulario</h1> <form action="procesar.php"method="post"> <table> <tr><td>Nombre: </td><td><inputtype="text"name="nombre"/></td></tr> <tr><td>Password: </td><td><inputtype="password"name="psw"/></td></tr> <tr> <td>Sexo : </td> <td> <inputtype="radio"name="sexo"value="H"checked />Hombre <inputtype="radio"name="sexo"value="M"/>Mujer </td> </tr> <tr><td>Mayor de 18:</td><td><inputtype="checkbox"name="mayor"checked/></td></tr> <tr><td>Fichero: </td><td><inputtype="file"name="upfile" /></td></tr> <tr><td>Hidden: </td><td><inputtype="hidden"name="escondido"value="sorpresa"/></td></tr> </table> LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
  • 22. <tr><td>Comida: </td> <td> <selectname="comida"> <option value="pasta">Pasta</option> <option value="carne">Carne</option> <option value="pescado">Pescado</option> <option value="postre">Postre</option> </select> </td></tr> <tr><td>Bebidas: </td> <td> <selectmultiplesize="3"name="bebida[]"> <option value="agua">Agua</option> <option value="vino">Vino</option> <option value="cerveza">Cerveza</option> </select> </td></tr> </table> <p> <inputtype="submit"value="Enviar"/> <inputtype="reset"value="Borrar"/> </p> </form> </body> </html> LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
  • 23. EJERCICIO: u5e1_formulario: • Prepara un formulario diseñado para almacenar los discos con los que trabajamos en el ejercicio u4e4_discos. Recuerda qué elementos se almacenaban, y elije el componente de formulario más adecuado: • Nombre del disco. • Grupo de música o cantante. • Año de publicación. • Tipo de música (podrá ser “rock”, “pop”, “punk” o “indie”); • Localización: almacenará un número de estantería. • Prestado: almacenará un valor booleano. Por defecto será false. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
  • 24. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Seleccionar un formulario • Disponemos del siguiente formulario: • <form id=“miFormulario” name=“miFormulario” action=“siguiente.php”…> getElementById() • var formulario = document.getElementById(“contactar”); getElementsByTagName() • var formularios = document.getElementsByTagName(“form”); • var primerform = formularios[0]; O en una sola línea: • var primerform = document.getElementsByTagName(“form”)[0]; LA U R A F O LG A D O G A LA CH E
  • 25. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Seleccionar un formulario • Disponemos del siguiente formulario: • <form id=“miFormulario” name=“miFormulario” action=“siguiente.php”…> forms[0] • var formularios = document.forms; //Devuelve un array de formularios • Var primerform = formularios [0]; O en una sola línea: • Var formularios = document.forms[0]; forms[“nombre”] • var formularios = document.forms; //Devuelve un array de formularios • Var primerform = formularios [“contactar”]; O en una sola línea: • Var formularios = document.forms[“contactar”]; LA U R A F O LG A D O G A LA CH E
  • 26. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO El formulario como contenedor de objetos: LA U R A F O LG A D O G A LA CH E
  • 27. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Selección de objetos de un formulario • Recuerda que… LA U R A F O LG A D O G A LA CH E form.elements[] devuelve un array con todos los input de un formulario. getElementByID() devuelve un elemento que tenga un id determinado. getElementsByTagName() devuelve un array de elementos de un tipo.
  • 28. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Selección de objetos de un formulario • En este ejemplo: • <form id=”formularioBusqueda" action=”siguiente.php”> • <p> • <input type="text" id="entrada" name="cEntrada"> • <input type="submit" id="enviar" name="enviar" value="Buscar..."> • </p> • </form> • Para hacer referencia al input de tipo texto podemos hacerlo mediante: • document.getElementById("entrada") • document.formularioBusqueda.cEntrada • document.formularioBusqueda.elements[0] • document.forms["formularioBusqueda"].elements["cEntrada"] • document.forms["formularioBusqueda"].cEntrada LA U R A F O LG A D O G A LA CH E
  • 29. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Objetos input de tipo texto • Es recomendable utilizar un id igual que el name para poder referirnos a ellos con getElementById. • Podemos referirnos a cualquiera de sus propiedades para cambiarlas. • Ejemplo: • <input type=“text” name=“nombre” id=“nombre”/> • document.getElementById(“nombre”).value=“Valor nuevo”; //Cambia el valor del texto Objetos input de tipo checkbox • La propiedad value es el texto asociado al objeto. • El formulario solamente envía los datos si el checkbox está marcado. • Ejemplo: • <input type=“checkbox” id=“cantidad” name=“cantidad” value=“100”/> • document.getElementById(“cantidad”).checked=true; //Marca el checked LA U R A F O LG A D O G A LA CH E
  • 30. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Objetos input de tipo radio • Cuando utilizamos varios radiobuttoncon el mismonombre, se creaun arrayde objetosinputradio. • Podemos consultar elnúmerode radiobutton con formulario.gruporadio.length;+ • Podemos consultar si un radio button estámarcadocon formulario.gruporadio[num].checked y devolverá trueo false. • Ejemplo: • for(var i=0; i<document.formulario.frutas.length;i++){ • if(document.formulario.frutas[i].checked) //Comprueba quees true • alert(document.formulario.ac tores [i].value); • } Objetos select • La propiedadselectedIndex devuelveel índice de laopción queha sidoseleccionada. • Cada opción tienedos propiedades accesibles: texty value queindican el valorvisible y elvalorinterno,respectivamente. • Ejemplo: • <option value=“ZA”>Zamora</option> • formulario.nombreCampoSelect.options[n].text; //DevuelveZamora • formulario.nombreCampoSelect.options[n].value;//Devuelve ZA LA U R A F O LG A D O G A LA CH E
  • 31. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Usando this • Utilizamos this para hacer referencia al objeto que llama a un evento. • Ejemplo: • <input type=“text” name=“nombre” id=“nombre” value=“Laura” onclick=“identificar(this)”/> • function identificar(objeto){ • var nombre=objeto.name; • var valor=objeto.value; • var id=objeto.id; • var tipo=objeto.type; • alert(“Datos del objeto: “+nombre+” – “+valor+” – “+id+” – “+tipo); • } LA U R A F O LG A D O G A LA CH E
  • 32. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Eventos • Los eventos se ejecutan cuando el usuario interactúa con la página (haciendo clic, pulsando una tecla, moviendo el ratón, etc.) o bien se tratan de eventos no relacionados con acciones del usuario (como onload, que sucede cuando la página se carga). • Un poco de historia: LA U R A F O LG A D O G A LA CH E Incompatibilidades denavegadores: habíaque comprobar si los métodos eran soportados. Modelode registros deeventos en línea: seañadecomoatributoa laetiqueta html: <a href=“…” onClick=accion/> Modelode registrodeeventos tradicional: los eventosson unapropiedadde los elementos: elemento.onclick=accion; Modeloavanzado de registrodeeventos del W3C: utilizaaddListener();
  • 33. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Modelo de registro de eventos en línea • El evento se añade como atributo de una etiquetahtml. • Se ejecuta primero el script y luego la acción por defecto. • Ejemplos: • 1) <a href=“siguiente.html” onclick=“alert(‘Has pulsado en el enlace’)”>Pulsa aquí</a> • 2) <a href=“siguiente.html” onclick=“alertar()”>Pulsa aquí</a> • function alertar(){alert(“Has pulsado el enlace”);} • Para evitar que el navegador ejecute acción por defecto: • <a href=“siguiente.html” onclick=“alertar(); return false;”>Pulsa aquí</a> De este modo no ejecutaría la acción por defecto: redirigir a la página siguiente.html. • Para preguntar si ejecutar o no la acción por defecto: • <a href=“siguiente.html” onclick=“return preguntar()”>Pulsa aquí</a> • function preguntar(){return confirm(“¿Desea realmente ir a esa dirección?”);} LA U R A F O LG A D O G A LA CH E
  • 34. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO ¿Por qué no utilizar el modelo de registro de eventos en línea? LA U R A F O LG A D O G A LA CH E No separa la programación de la estructura. Si la función redirige a una página no se ejecutan las demás tareas. Al ejecutar la acción por defecto se pueden perder los objetos que hay en memoria (ej. Al cambiar de página).
  • 35. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Modelo de registro de eventos tradicional • El evento se convierte en una propiedad del elemento: • Ejemplos: • elemento.onclick = acción; • function accion() {…} • Para eliminar un gestor de eventos de un elemento: • elemento.onclick=null; • Para llamar al gestor de eventos cuando queramos: • elemento.onclick(); • No usamos paréntesis, porque no necesitamos que devuelva el resultado. • elemento.onclick=accion(); à elemento.onclick=accion; LA U R A F O LG A D O G A LA CH E
  • 36. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Modelo de registro de eventos avanzado del W3C • Utiliza un evento addEventListener() con tres argumentos: • Tipo de evento. • Función a ejecutar. • Valor booleano para elegir la fase de captura (true) o burbujeo (false). • elemento.addEventListener('evento', función, false|true) • Ej: document.getElementById("mienlace").addEventListener('click',alertar,false); • ¡¡Ojo!! No lleva “on” delante del nombre del evento. LA U R A F O LG A D O G A LA CH E
  • 37. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Modelo de registro de eventos avanzado del W3C • Eliminar un evento de un elemento: • elemento.removeEventListener(); • Crear más de un evento para el mismo elemento: • document.getElementById("mienlace").addEventListener('click',alertar,false); • document.getElementById("mienlace").addEventListener('click',avisar,false); • document.getElementById("mienlace").addEventListener('click',chequear,false); • Crear un evento anónimo (no está asociado a ninguna función): • element.addEventListener('click', function () { • this.style.backgroundColor = '#cc0000'; }, false) LA U R A F O LG A D O G A LA CH E
  • 38. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. MODIFICACIÓN DE APARIENCIA Y COMPORTAMIENTO Modelo de registro de eventos avanzado según Microsoft • Utiliza un evento attachEvent() con tres argumentos: • Tipo de evento. • Función a ejecutar. • ¡¡Ojo!! En este modelo de registro de eventos se utiliza “on” delante del nombre. • elemento.attachEvent('evento', función) • Ej: document.getElementById("mienlace").attachEvent(’onclick',alertar); • Eliminar un evento de un elemento: • elemento.detachEvent(‘onclick’,accion); • Crear más de un evento para el mismo elemento: • elemento.attachEvent('onclick', hacerUnaCosa); • elemento.attachEvent('onclick', hacerOtraCosa); LA U R A F O LG A D O G A LA CH E
  • 39. EJERCICIO: u5e2_parejas: • Vas a crear un juego que consiste en encontrar parejas en 12 cartas con 6 parejas de los personajes de los Simpson. El juego consistirá en lo siguiente: • La aplicación deberá tener una tabla con 3 filas y cuatro columnas de un color. Además habrá un cuadro de texto con el valor 0 pero no modificable. • Cuando el usuario haga clic sobre una celda, se mostrará una imagen. • Cuando el usuario haga clic sobre otra celda, se mostrará otra imagen. • Si las dos imágenes son iguales, se cambiará el color de la celda y se añadirá 1 al cuadro de texto. • Si las dos imágenes son diferentes, se ocultarán mostrando nuevamente el color inicial. • En primer lugar, crea un esquema en una hoja con el arbol DOM del documento html y en otra indica los métodos que vas a crear asociados a qué evento. • Trata de utilizar el menor número de variables posibles: utiliza las propiedades de los elementos para cambiar su comportamiento. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.3. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
  • 40. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS Validación de formularios • Debemos indicar, en la etiqueta del formulario, que realice la validación: • <form action="URL" method="post" name="formValidado" onsubmit="return validar()”> • … • </form> • Podemos hacerlo con un AddEventListener (mejor): • document.getElementById("enviar").addEventListener('click',validar,false); LA U R A F O LG A D O G A LA CH E
  • 41. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS Validación de formularios • En primer lugar definimos unafunción “iniciar”queseva a cargar únicamentecuandoel documentohayasidocargado completamente. • window.onload=iniciar; • function iniciar() { document.getElementById("enviar").addEventListener('click',validar,false); } • La función validar recibeel eventopor defectoasociadoal botón enviar. Validamos cada apartado llamandoa las funciones correspondientes: • function validar(eventopordefecto){ • if (validarcampostexto(this)&& validarMatricula() && validarProvincia() && • confirm("¿Deseas enviar el formulario?")) • return true; • else{ • eventopordefecto.preventDefault(); //Cancelamosel enventodeenvíopor defectoasignadoal botón • return false; // Salimos dela función devolviendofalse. • } • } LA U R A F O LG A D O G A LA CH E
  • 42. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS Valida un campode texto: function validacion(){ valor = document.getElementById("campo").value; if( valor == “” || valor.length== 0 ){ alert("El camponopuede ser vacío"); return false; } return true; } Valida todos los campos de textodel formulario: var formulario= objeto.form; for (var i=0; i<formulario.elements.length; i++) { if (formulario.elements[i].type== "text" && formulario.elements[i].value=="") { alert("El campo: "+formulario.elements[i].name+" nopuede estar en blanco"); formulario.elements[i].className="error; formulario.elements[i].focus(); return false; } LA U R A F O LG A D O G A LA CH E Validación de un campo como obligatorio:
  • 43. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS Ejemplo1 (teléfono): function validaNum() { valor = document.getElementById("telefono").value; if( isNaN(valor) ) { alert("El campotienequeser numérico"); return false; } return true; } Ejemplo 2 (edad): if (formulario.elements[i].id=="edad"){ if (isNaN(formulario.elements[i].value) || formulario.elements[i].value<0 || formulario.elements[i].value>105) { alert("El campo: "+formulario.elements[i].name+" posee valores incorrectos olaedad <0 o >105"); } LA U R A F O LG A D O G A LA CH E Validación de un campo de texto como numérico:
  • 44. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS Ejemplo: function validaFecha() { vardia= document.getElementById("dia").value; varmes = document.getElementById("mes").value; varano = document.getElementById("ano").value; fecha= new Date(ano, mes, dia); if( !isNaN(fecha) ) { return false; } return true; } LA U R A F O LG A D O G A LA CH E Validación de un campo de fecha:
  • 45. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS LA U R A F O LG A D O G A LA CH E Modificación de la apariencia de un campo erróneo: Podemos modificar la apariencia de un campo creando en css una clase error: .error{ border: solid 2px #FF0000; } Así, cuando un campo sea erróneo, le aplicamos dicha clase. Ejemplo: if (formulario.elements[i].type == "text" && formulario.elements[i].value=="") { alert("El campo: "+formulario.elements[i].name+" no puede estar en blanco"); formulario.elements[i].className="error"; formulario.elements[i].focus(); return false; }
  • 46. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.4. ENVÍO Y VALIDACIÓN DE FORMULARIOS Ejemplo: function validaCheck(){ elemento= document.getElementById("campoCondiciones"); if( !elemento.checked) { return false; } return true; } LA U R A F O LG A D O G A LA CH E Validación de un checkbox:
  • 47. EJERCICIO: u5e3_formulario2: • A partir del formulario creado en la actividad 1, realiza las funciones necesarias para validarlo teniendo en cuenta: • Nombre del disco: 20 caracteres, obligatorio. • Grupo de música o cantante: 20 caracteres, obligatorio. • Año de publicación: 4 caracteres numéricos. • Tipo de música (podrá ser “rock”, “pop”, “punk” o “indie”): sin comprobación. • Localización: almacenará un número de estantería: vacío o numérico. • Prestado: sin comprobación. • Tendrás que tener en cuenta, además: • Que utilizarás un método window.onload. • Que la validación se asignará al formulario mediante un AddEventListener. • Que los campos nombre del disco y grupo de música se validarán en la misma función (campo20). LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
  • 48. EJERCICIO: u5e3_formulario2 - Ampliación: • Modifica las funciones de tal manera que, en caso de que se produzca un error en la validación, el campo implicado tenga el reborde rojo, y la etiqueta que lo acompaña también aparezca de color rojo. • Para ello deberás crear las clases css necesarias (puedes incluirlas en el propio html si lo deseas) para que se visualice correctamente. • Ten en cuenta que si el usuario mete correctamente el nombre, deberá volver a su color habitual. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.2. UTILIZACIÓN DE FORMULARIOS DESDE CÓDIGO
  • 49. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES Expresiones regulares: • Se utiliza en datos que siguen un patrón concreto. • Ejemplos de expresiones regulares: LA U R A F O LG A D O G A LA CH E Código postal. Teléfono (sobre todo con prefijos...) DNI. Tarjeta de extranjería. Código de cuenta del banco. Correo electrónico. Identificadores de usuario.
  • 50. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES Caracteres especiales LA U R A F O LG A D O G A LA CH E Car. Descripción Detalle ^ Principiodeentradao línea. Estecarácter indicaquelas cadenas deberán comenzar por el siguientecarácter. Si estefuerauna“a” minúsculacomo indicamos en el puntoanterior laexpresión regular seriasería, ^a. $ Fin de entradao línea. Indicaque la cadenadebe terminar por el elementoprecedidoal dólar. * El carácter anterior 0 omás veces. * El carácter anterior 0 omás veces. El asteriscoindicaqueel carácter anterior sepuede repetir en la cadena0 o más veces. + El carácter anterior 1 omás veces. El símbolomás indicaqueel carácter anterior sepuede repetir en la cadenauna o más veces. ? El carácter anterior unavez comomáximo. El símbolointerrogaciónindicaqueel carácter anterior sepuede repetir en la cadenacero o unavez . Cualquier carácter individual. El símbolopuntoindicaque puede haber cualquier carácter individual salvo el de saltode línea.
  • 51. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES Caracteres especiales LA U R A F O LG A D O G A LA CH E Car. Descripción Detalle x|y X ó y La barra vertical indicaquepuede ser el carácter x o el y. {n} n veces el carácter anterior El carácter anterior alas llaves tieneque aparecer exactamente n veces. {n,m} Entren y m veces el carácter anterior El carácter anterior alas llaves tieneque aparecer comomínimo n y comomáximom veces. [abc] Cualquier carácter delos corchetes. En lacadena puede aparecer cualquier carácter que este incluidoen los corchetes. [^abc] Un carácter que noestéen los corchetes En lacadena pueden aparecer todos los caracteres quenoestén incluidos en los corchetes.
  • 52. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES Caracteres especiales LA U R A F O LG A D O G A LA CH E Car. Descripción Detalle b Fin de palabra Este símbolo indica que tiene que haber un fin de palabra o retorno de carro. B No fin de palabra El símbolo B indica cualquiera que no sea un límite de palabra. d Cualquier carácter dígito Este símboloindica que puede haber cualquier carácter numérico, de 0 a 9. D Carácter que no es dígito Este símbolo indica que puede haber cualquier carácter siempre que no sea numérico. f Salto de página Este símbolo indica que tiene que haber un salto de página n Salto de línea Este símbolo indica que tiene que haber un salto de línea. s Cualquier espacio en blanco Este símbolo indica que tiene que haber un carácter individual de espacio en blanco: espacios, tabulaciones, saltos de página o saltos de línea. S Cualquier carácter que no sea blanco Este símbolo indica que tiene que haber cualquier carácter individual que no sea un espacio en blanco. t Cualquier tabulación Este símbolo indica que tiene que haber cualquier tabulación. w Cualquier alfanumérico Este símbolo indica que puede haber cualquier carácter alfanumérico. W Cualquier carácter no alfanumérico Este símbolo indica que puede haber cualquier carácter que no sea alfanumérico.
  • 53. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES Ejemplo: § function validaDNI(){ § valor = document.getElementById("dni").value; § varletras = ['T','R','W','A','G','M','Y','F’,'P','D','X', 'B','N','J','Z','S','Q','V’,'H','L','C','K','E’,'T']; § if( !(/^d{8}[A-Z]$/.test(valor)) ){ return false; } § if(valor.charAt(8) != letras[(valor.substring(0, 8))%23]) § { return false; } § return true; § } LA U R A F O LG A D O G A LA CH E Validación de un DNI:
  • 54. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES Ejemplo: § function validaEmail(){ § valor =document.getElementById("campo").value; § if(!(/w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)/.test(valor)) ) { § return false; § } § return true; § } LA U R A F O LG A D O G A LA CH E Validación de un correo electrónico:
  • 55. 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES Ejemplo: § function validaTelefono(){ § valor = document.getElementById("telefono").value; § if( !(/^d{9}$/.test(valor)) ) { § return false; § } § return true; § } LA U R A F O LG A D O G A LA CH E Validación de un teléfono:
  • 56. EJERCICIO: u5e4_expresionesregulares: • Walter White y Jesse Pinkman tienen que controlar las bolsas de producto azul que cocinan para distribuir en Alburquerque. Para ello tienen que crear un formulario que almacene la información de cada bolsa y validarlo teniendo en cuenta lo siguiente: • Fecha de creación: obligatorio y con formato dd/mm/aaaa. • Cocinero: será un nombre en clave formado por dos letras en mayúscula, un símbolo y cuatro dígitos (ej. WW$1234) • Destinatario: estará formado por dos o tres letras mayúsculas correspondientes al estado, un guión bajo, el nombre de la ciudad en minúsculas, dos puntos, y el código de distrito de 4 digitos (ej. NM_alburquerque:1234). • Gramos: será un número del 100 al 5000. • Composición: estará formado por una cantidad en gramos seguida de dos conjuntos de una o dos letras seguidas o no de un número. (ej. 200gC3OH7) • Número de cuenta de EEUU: ver diapositiva siguiente: LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES
  • 57. EJERCICIO: u5e4_expresionesregulares: • Supongamos que un número de cuenta estadounidense tiene el siguiente formato: • Dos letras: suponemos que el valor de cada letra es del 1 al 26 (no hay ñ ni ll). • Dos dígitos: debe corresponderse con la suma de la primera letra y la segunda: en caso de que sea menor que 10 se pone el 0 delante. • Un guión. • Doce dígitos de cuenta. • Un guión. • Dos dígitos de control: los dos primeros deben ser la suma de los 6 primeros dígitos de la cuenta dividido entre 6 y extrayendo solamente su parte entera; y los dos últimos exactamente igual, pero con los 6 siguientes. • Si el número está correcto se colocará en un campo de texto al lado del anterior, pero sin guiones: solamente los números y las letras. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES
  • 58. Cookie: • Fichero de texto propio de cada navegador. • Se almacena en diferentes lugares según el navegador y el sistema operativo. • Se comenzaron a utilizar para guardar la información de los carritos de compra. • Son específicas del dominio: un dominio no puede acceder a la cookie de otro dominio. • Tienen una fecha de caducidad: como el número de cookies es limitado, el propio navegador se encargar de borrarlas. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.6. LAS COOKIES
  • 59. Formato de registro de una cookie: • Dominio del servidor que creó la cookie. • Información de si es necesaria una conexión http segura para acceder a la cookie. • Trayectoria de las URL que podrán acceder a la cookie. • Fecha de caducidad de la cookie. • Nombre de una entrada de datos. • Cadena de texto asociada a ese nombre de entrada de datos. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.6. LAS COOKIES
  • 60. • En Windows 7 y Vista: “Usuarios<Tu_usuario>AppDataR oamingMozillaFirefoxProfilesserie _de_números_y_letras.default”. • En Unix/Linux en la carpeta: “~/.mozilla/”. • En Mac OS X: “~/Library/Mozilla/”. Almacenamiento: “cookies.sqlite” (a partir de la versión 3 de Firefox). También os encontraréis con los archivos “cookies.sqlite-shm”, “cookies.sqlite-wal” y “cookies-nontor.xml” para poder explorar (darle formato visual) la base de datos de cookies. • En Windows vista o 7: “Usuarios<Tu_usuario>AppDataL ocalGoogleChromeUser DataDefault”. • En Mac OS X: “~/Library/Preferences/Opera Preferences/cookies4.dat”. • En UNIX y distros Linux: “~/.config/google-chrome/Default”. Almacenamiento: “cookies” sin extensión en formato base de datos. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.6. LAS COOKIES
  • 61. • Windows Vista y 7: “Usuarios<Tu_usuario>AppDataR oamingOperaOpera”. • Mac OS X: “~/Library/Cookies”. • Unix y otras distros Linux: “~/.opera/”. Almacenamiento: “cookies4.dat” en formato binario. • Windows Vista y 7: “Usuarios<Tu_usuario>AppDataR oamingApple ComputerSafariCookies”. • Mac OS X: “~/Library/Cookies”. • Unix y otras distros Linux: no hay una versión oficial del navegador de Apple para Linux. Almacenamiento: “Cookies.binarycookies” en formato binario. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.6. LAS COOKIES •En Windows 7 y Vista: “Usuarios<Tu_usuario>AppDataRoamingMicrosoftWindowsCookies”. Almacenamiento: en formato texto, en archivos codificados con extensión .txt.
  • 62. Opciones de utilización: LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.6. LAS COOKIES Mantener opciones de visualización. Almacenamiento de variables. Seguimiento de la actividad del usuario. Autenticación de usuarios.
  • 63. Grabar una cookie: document.cookie = “nombreCookie = datosCookie [; expires=horaFormatoGMT] Ej. expires=01 Jan 70 00:00:00 GMT; [; path=ruta] Ruta actual de nuestra página web. [; domain=nombreDominio] Por defecto, el que creó la cookie. [; secure]”Si no se pone, puede ser accesible por cualquier programa que se ajuste al dominio y path Borrar una cookie: Se le asigna una fecha de caducidad anteriora la actual. Ejemplos: document.cookie = “usuario=Laura;expires=2 Dec2014,23:59:59GMT”; document.cookie = “contador=0”; Si la cookie no existe,la crea; si existe,la sobreescribe. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.6. LAS COOKIES
  • 64. Función para inicializar una cookie: function setCookie(cname, cvalue, exdays) { var d = new Date(); //Se extrae la fecha actual d.setTime(d.getTime() + (exdays*24*60*60*1000)); //Se le suman los días indicados por parámetro var expires = "expires="+d.toUTCString(); //Se pasa a formato GMT document.cookie = cname + "=" + cvalue + "; " + expires; //Se crea la cookie } LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.6. LAS COOKIES
  • 65. Leer una cookie: var x = document.cookie; //Devuelve toda la cadena con todas las variables; Leer un valor concreto de la cookie: function getCookie(cname) { var name = cname + "="; //Crea una variable con el texto del campo y un igual var ca = document.cookie.split(';'); //divide la cookie en trozos separados por ; for(var i=0; i<ca.length; i++) { //Recorre cada trozo de la cookie var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1); if (c.indexOf(name) == 0) //Si encuentra el campo buscado return c.substring(name.length,c.length); //lo devuelve } return ""; //Sino devuelve vacío } LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.6. LAS COOKIES
  • 66. Comprobar si una cookie está inicializada: function checkCookie() { var username=getCookie("username"); //Se extrae el valor (ver función anterior) if (username!="") { //Si no está vacío alert(”Bienvenido de nuevo, " + username); //Se le saluda }else{ //Sino username = prompt(”Introduzca sunombre:", ""); //Se le solicita con prompot if (username != "" && username != null) { setCookie("username", username, 365); //Se inicializa la variable } } } LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.6. LAS COOKIES
  • 67. EJERCICIO: u5e5_cookies: • Crea un fichero que se llame “cookies.js” y que permita trabajar con las cookies de manera que puedas crear, borrar y consultar una cookie. Consulta los métodos tratados en clase y recuerda que el método borrar no ha sido creado aún así que deberás crearlo tú mismo. • Modifica el archivo anterior u5e4_expresionesregulares de la siguiente manera: • Cada vez que el usuario trate de enviar el formulario y haya algún error, una variable contador (almacenada en una cookie) se incrementará. • El resultado del número de intentos se reflejará en un campo de texto que se encontrará al final del formulario. • Si el usuario sale del programa y vuelve a entrar, el campo de texto mostrará el número almacenado en la cookie. • Junto al campo de texto habrá un botón que, al pulsarlo, permitirá reiniciar el valor de la cookie a 0. LA U R A F O LG A D O G A LA CH E 5. INTERACCIÓN CON EL USUARIO: EVENTOS Y FORMULARIOS 5.5. EXPRESIONES REGULARES