SlideShare una empresa de Scribd logo
INTRODUCCIÓN A JAVASCRIPT
III
FORMULARIOS
Una de las principales razones por las que se inventó el
lenguaje de programación JavaScript fue la necesidad de
validar los datos de los formularios directamente en el
navegador del usuario.
De esta forma, se evitaba recargar la página cuando el
usuario cometía errores al rellenar los formularios
Propiedades básicas de formularios y
elementos
cuando se carga una página web, el navegador crea
automáticamente un array llamado forms y que contiene
la referencia a todos los formularios de la página.
Para acceder al array forms, se utiliza el objeto
document, por lo que document.forms es el array que
contiene todos los formularios de la página.
document.forms[0]; accede al primer formulario de
la página
• Además del array de formularios, el navegador crea automáticamente un
array llamado elements por cada uno de los formularios de la página.
• Cada array elements contiene la referencia a todos los elementos (cuadros
de texto, botones, listas desplegables, etc.) de ese formulario.
• Utilizando la sintaxis de los arrays, la siguiente instrucción obtiene el primer
elemento del primer formulario de la página:
document.forms[0].elements[0];
• El siguiente ejemplo muestra cómo obtener directamente el último elemento
del primer formulario de la página:
document.forms[0].elements[document.forms[0].elements.length-1];
• En un entorno tan cambiante como el diseño web, es
muy difícil confiar en que el orden de los formularios se
mantenga estable en una página web.
• Por este motivo, siempre debería evitarse el acceso a
los formularios de una página mediante el array
document.forms.
• Es más recomendable acceder a los formularios de una
página a través de su nombre (atributo name) o a
través de su atributo id.
• El objeto document permite acceder directamente a
cualquier formulario mediante su atributo name:
var formularioPrincipal = document.formulario;
var formularioSecundario = document.otro_formulario;
Los elementos de los formularios también se pueden acceder
directamente mediante su atributo name:
También se puede acceder a los formularios y a sus elementos utilizando
las funciones DOM de acceso directo a los nodos.
El siguiente ejemplo utiliza la habitual función
document.getElementById() para acceder de forma directa a un
formulario y a uno de sus elementos:
Cada elemento del formulario dispone de las siguientes propiedades útiles :
• type: indica el tipo de elemento que se trata.
• form: es una referencia directa al formulario al que pertenece
el elemento.
• name: obtiene el valor del atributo name de XHTML. Solamente
se puede leer su valor, por lo que no se puede modificar.
• value: permite leer y modificar el valor del atributo value de
XHTML.
Los eventos más utilizados en el manejo de los formularios son los siguientes:
• onclick: evento que se produce cuando se pincha con el ratón sobre
un elemento.
• onchange: evento que se produce cuando el usuario cambia el valor
de un elemento de texto. También se produce cuando el usuario
selecciona una opción en una lista desplegable (<select>).
• onfocus: evento que se produce cuando el usuario selecciona un
elemento del formulario.
• onblur: evento complementario de onfocus, ya que se produce
cuando el usuario ha deseleccionado un elemento por haber
seleccionado otro
Obtener el valor de los campos de formulario
Cuadro de texto y textarea
Obtener el valor de los campos de formulario
Radiobutton
Ejemplo
Obtener el valor de los campos de formulario
Checkbox
Ejemplo
Obtener el valor de los campos de formulario
Select
Ejemplo
• Lo que se requiere es obtener el valor del atributo value de la opción
(<option>) seleccionada por el usuario.
• Para obtener el valor seleccionado, deben utilizarse las siguientes
propiedades:
• options, es un array creado automáticamente por el navegador para
cada lista desplegable y que contiene la referencia a todas las opciones
de esa lista. De esta forma, la primera opción de una lista se puede
obtener mediante
document.getElementById("id_de_la_lista").options[0].
• selectedIndex, cuando el usuario selecciona una opción, el navegador
actualiza automáticamente el valor de esta propiedad, que guarda el
índice de la opción seleccionada. El índice hace referencia al array
options creado automáticamente por el navegador para cada lista.
Obtener el valor de los campos de formulario
Select
• Lo más importante es no confundir el valor de la propiedad
selectedIndex con el valor correspondiente a la propiedad value de la
opción seleccionada.
• En el ejemplo anterior, la primera opción tiene un value igual a 1.
• Sin embargo, si se selecciona esta opción, el valor de selectedIndex será
0, ya que es la primera opción del array options (y los arrays empiezan a
contar los elementos en el número 0).
Establecer el foco en un elemento
Para asignar el foco a un elemento de XHTML, se utiliza la función
focus().
El siguiente ejemplo asigna el foco a un elemento de formulario
cuyo atributo id es igual a primero:
Evitar el envío duplicado de un formulario
Una buena práctica en el diseño de aplicaciones web suele ser
la de deshabilitar el botón de envío después de la primera
pulsación. El siguiente ejemplo muestra el código necesario:
Ejemplo
El botón del ejemplo anterior está definido mediante un botón de tipo
<input type="button" />, ya que el código JavaScript mostrado no funciona
correctamente con un botón de tipo <input type="submit" />.
Si se utiliza un botón de tipo submit, el botón se deshabilita antes de enviar
el formulario y por tanto el formulario acaba sin enviarse.
Validación de Usuario y Passwords
• Antes de HTML5, era común usar Javascript para validar campos
requeridos, mail, números, números de documento, etc.
• Con HTML5 podemos diseñar elementos de formulario que se validen en
forma nativa ahorrando mucho trabajo.
• Sin embargo, la validación de las contraseñas aún no se ha establecido
de forma nativa, por tanto es importante ver como hacerlo usando
funciones javascript de acuerdo a nuestros requerimientos.
• Creemos un formulario de esta forma para nuestro ejemplo:
<form ... onsubmit="return checkForm(this);">
<p>Username: <input type="text" name="username"></p>
<p>Password: <input type="password" name="pwd1"></p>
<p>Confirm Password: <input type="password"
name="pwd2"></p>
<p><input type="submit"></p>
</form>
Validación de Usuario y Passwords
• El método test():
• Es un método muy útil para buscar patrones en una cadena.
• Devuelve un valor Boolean que indica si existe o no un patrón en una
cadena de búsqueda.
• El método test comprueba si existe un patrón dentro de una cadena:
devuelve true si existe y false de lo contrario.
• El método test no modifica las propiedades del objeto RegExp global.
• Sintaxis: rgExp.test(str)
• Parámetros:
rgExp: Obligatorio. Instancia de un objeto Regular Expression que
contiene el patrón de expresión regular y las marcas aplicables.
Str: Obligatorio. Cadena en la que se va a buscar.
Validación de Usuario y Passwords
• Evitar usuarios en blanco:
if(form.username.value == "") {
alert("Error: El usuario no puede estar en blanco!");
form.username.focus();
return false;
}
Validación de Usuario y Passwords
• Evitar usuarios con caracteres especiales (/^w+$/):
re = /^w+$/;
if (!re.test (form.username.value)) {
alert("Error: Usuario solo puede contener XXX caracteres!");
form.username.focus();
return false;
}
Validación de Usuario y Passwords
• Controlar que coincidan los passwords
if(form.pwd1.value != "" && form.pwd1.value ==
form.pwd2.value) {
//Anidado dentro debe ir el resto de validaciones
}
Validación de Usuario y Passwords
• Que el password tenga más de 6 caracteres:
if(form.pwd1.value.length < 6) {
alert("Error: …Más de 6 caracteres!");
form.pwd1.focus();
return false;
}
Validación de Usuario y Passwords
• Que el password sea diferente del nombre de usuario:
if(form.pwd1.value == form.username.value) {
alert("Error: …diferente de usuario!");
form.pwd1.focus();
return false;
}
Validación de Usuario y Passwords
• Que el password contenga al menos un número (0-9):
re = /[0-9]/;
if(!re.test(form.pwd1.value)) {
alert("Error: …por lo menos un n° 0-9)!");
form.pwd1.focus();
return false;
}
Validación de Usuario y Passwords
• Que el password contenga al menos una letra minúscula (a-z):
re = /[a-z]/;
if(!re.test(form.pwd1.value)) {
alert("Error: …al menos una letra(a-z)!");
form.pwd1.focus();
return false;
}
Validación de Usuario y Passwords
• Que el password contenga al menos una letra mayúscula (A-Z):
re = /[A-Z]/;
if(!re.test(form.pwd1.value)) {
alert("Error: …al menos una letra(A-Z)!");
form.pwd1.focus();
return false;
}
Ejemplo
Validación de Usuario y Passwords
• Validar formulario usando HTML5:
• Unos atributos de formulario simples pueden tener el mismo efecto que
un montón de bibliotecas de código JavaScript.
• Aquí tenemos una versión mejorada del código anterior, donde hemos
añadido atributos “required” y “pattern” para aplicar pruebas de
expresiones regulares en el propio formulario
• También hemos añadido un evento onchange al primer campo de
contraseña que actualiza el patrón requerido por el segundo campo de
contraseña, lo que le obliga a ser idénticos 
• Obs: W es equivalente a[^a-zA-Z0-9_]
Ejemplo
Validación de Usuario y Passwords
• Cambiar el mensaje de error de HTML5 :
• Dependiendo del navegador, los mensajes para required son “rellene
este campo” y para pattern “ajústese al formato solicitado”.
• Se pueden personalizar estos mensajes agregando unas líneas de código
al ejemplo anterior.
• En el ejemplo, jugamos con el atributo input title, el método
setCustomValidity y la propiedad validity.patternMismatch
Ejemplo
EJERCICIO
Cree un formulario con los campos nombre, apellido,
mail, nombre de usuario y contraseña. Agregue
radiobutton de sexo y ciudades con <select>.
Agregue un estilo personalizado con CSS, CSS3.
Valide como requeridos todos los campos.
Tenga como válida solo una opción en el radiobutton y
el select
Valide las contraseñas como se ha visto en los ejemplos.
FUENTES
• http://www.the-art-of-
web.com/javascript/validate-
password/#box1
• http://librosweb.es/libro/javascript/capitul
o_7.html
• HTML5 FOR MASTERMINDS, JD GAUCHAT
(http://www.amazon.com/HTML5-
Masterminds-2nd-Edition-
revolutionary/dp/1481138502)

Más contenido relacionado

DOCX
Procedimiento Para Utilizar Flex Y Bison
PDF
DOCX
Cuaderno de ejercicios y practicas vistual basic
PPTX
Unidad 2 ensamblador
PDF
Ciclo de ejecución de instrucciones
PDF
Unidad1 2 Lenguajes y automatas
PPTX
Organización y administración de la memoria virtual
Procedimiento Para Utilizar Flex Y Bison
Cuaderno de ejercicios y practicas vistual basic
Unidad 2 ensamblador
Ciclo de ejecución de instrucciones
Unidad1 2 Lenguajes y automatas
Organización y administración de la memoria virtual

La actualidad más candente (20)

PPTX
Modos de direccionamiento.
PDF
UDA-Componentes RUP. Tabla (v2.1.1 deprecado)
PDF
MAPA CONCEPTUAL
DOC
Practica 4 procesadores
DOCX
Base de datos desde visual basic 6.0
PPTX
Estructura jerarquica de un sistema operativo
PDF
Documento arquitectura de software
PPTX
TECNICAS DE MANTENIMIENTO DE SW.pptx
PPTX
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
PPTX
COMANDOS DE SISTEMAS OPERATIVOS MS-DOS - CMD
DOC
09 guiados spinner Java
PPT
INYECCION SQL(SEGURIDAD DE LA INFORMACION)
PPTX
Multiprocesamiento
PPTX
Procedimientos Almacenados SQL SEVER.pptx
PPTX
Estructuras de control
PDF
Taller Practico 2 Base de Datos
PDF
Windows.forms.ejercicios
DOCX
Practicas visual basic-net
PDF
Guía de Visual Fox Pro 9.0
PDF
Programación Modular
Modos de direccionamiento.
UDA-Componentes RUP. Tabla (v2.1.1 deprecado)
MAPA CONCEPTUAL
Practica 4 procesadores
Base de datos desde visual basic 6.0
Estructura jerarquica de un sistema operativo
Documento arquitectura de software
TECNICAS DE MANTENIMIENTO DE SW.pptx
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
COMANDOS DE SISTEMAS OPERATIVOS MS-DOS - CMD
09 guiados spinner Java
INYECCION SQL(SEGURIDAD DE LA INFORMACION)
Multiprocesamiento
Procedimientos Almacenados SQL SEVER.pptx
Estructuras de control
Taller Practico 2 Base de Datos
Windows.forms.ejercicios
Practicas visual basic-net
Guía de Visual Fox Pro 9.0
Programación Modular
Publicidad

Destacado (14)

PDF
Inferencia en Lógica de Primer Orden
PPTX
Lógica de primer orden
PPTX
Extension e investigacion1
PPTX
Extension e investigacion
PPTX
Agentes Lógicos: Lógica proposicional
PPTX
Introducción a CSS 2
PPTX
Busqueda Entre Adversarios
PDF
Responsive Web Design
PPTX
Agentes Lógicos: El mundo de Wumpus
PPTX
Introduccion a AJAX
PPTX
CSS 3, Style and Beyond
PPTX
MinMax
PDF
Introducción HTML
Inferencia en Lógica de Primer Orden
Lógica de primer orden
Extension e investigacion1
Extension e investigacion
Agentes Lógicos: Lógica proposicional
Introducción a CSS 2
Busqueda Entre Adversarios
Responsive Web Design
Agentes Lógicos: El mundo de Wumpus
Introduccion a AJAX
CSS 3, Style and Beyond
MinMax
Introducción HTML
Publicidad

Similar a Introducción a Javascript: Formularios (20)

PPTX
Html 5: formularios
PPTX
Diapositiva formulario
DOCX
Formulario
DOCX
Guía Formulario
PPTX
INTRODUCCIÓN A HTML – XHTML – Clase 03
PDF
Formularios html5
PDF
Formularios y Validaciones
PDF
S03 - Lenguaje HTML - Formulario con PHP
DOC
Formularios Javascript
DOC
Formularios Javascript
PDF
5 formularios - javascript
PDF
Formularios HTML
PPSX
Curso HTML 5 & jQuery - Leccion 4
DOCX
Formularios
PDF
Clase 11 formularios
PDF
Html Tema 4 - Formularios
DOCX
Formularios 1
DOCX
DOCX
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSP
PDF
Js api formularios
Html 5: formularios
Diapositiva formulario
Formulario
Guía Formulario
INTRODUCCIÓN A HTML – XHTML – Clase 03
Formularios html5
Formularios y Validaciones
S03 - Lenguaje HTML - Formulario con PHP
Formularios Javascript
Formularios Javascript
5 formularios - javascript
Formularios HTML
Curso HTML 5 & jQuery - Leccion 4
Formularios
Clase 11 formularios
Html Tema 4 - Formularios
Formularios 1
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSP
Js api formularios

Más de Héctor Estigarribia (15)

PPTX
Introducción a Javascript I
PPTX
Introduccion a CSS I
PPTX
Introduccion a HTML - XHTML clase 04
PPTX
Problemas de Satisfaccion de restricciones (PSR)
PPTX
Ejercicios de búsqueda a Ciegas y Búsqueda informada
PPTX
Búsqueda informada y exploración
PPTX
Introduccion a HTML - XHTML. Clase 02
PPTX
Introduccion a HTML - XHTML - Clase 01
PDF
SOLUCIÓN DE PROBLEMAS MEDIANTE BÚSQUEDA
PDF
Inteligencia Artificial: Introducción - Reseña Histórica
PDF
Agentes Inteligentes
PPT
Consejos para powerpoint
PDF
Altivar18 Lang: Deutsch - ENg- Spanish - French
PDF
Yas manual j1000frecuencia
PPT
Introducción a Javascript I
Introduccion a CSS I
Introduccion a HTML - XHTML clase 04
Problemas de Satisfaccion de restricciones (PSR)
Ejercicios de búsqueda a Ciegas y Búsqueda informada
Búsqueda informada y exploración
Introduccion a HTML - XHTML. Clase 02
Introduccion a HTML - XHTML - Clase 01
SOLUCIÓN DE PROBLEMAS MEDIANTE BÚSQUEDA
Inteligencia Artificial: Introducción - Reseña Histórica
Agentes Inteligentes
Consejos para powerpoint
Altivar18 Lang: Deutsch - ENg- Spanish - French
Yas manual j1000frecuencia

Último (20)

PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
biología es un libro sobre casi todo el tema de biología
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PPT
Cosacos y hombres del Este en el Heer.ppt
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
PDF
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
biología es un libro sobre casi todo el tema de biología
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Cosacos y hombres del Este en el Heer.ppt
Lección 6 Escuela Sab. A través del mar rojo.pdf
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
caso clínico iam clinica y semiología l3.pptx
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
Tomo 1 de biologia gratis ultra plusenmas
V UNIDAD - PRIMER GRADO. del mes de agosto
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf

Introducción a Javascript: Formularios

  • 2. Una de las principales razones por las que se inventó el lenguaje de programación JavaScript fue la necesidad de validar los datos de los formularios directamente en el navegador del usuario. De esta forma, se evitaba recargar la página cuando el usuario cometía errores al rellenar los formularios
  • 3. Propiedades básicas de formularios y elementos cuando se carga una página web, el navegador crea automáticamente un array llamado forms y que contiene la referencia a todos los formularios de la página. Para acceder al array forms, se utiliza el objeto document, por lo que document.forms es el array que contiene todos los formularios de la página. document.forms[0]; accede al primer formulario de la página
  • 4. • Además del array de formularios, el navegador crea automáticamente un array llamado elements por cada uno de los formularios de la página. • Cada array elements contiene la referencia a todos los elementos (cuadros de texto, botones, listas desplegables, etc.) de ese formulario. • Utilizando la sintaxis de los arrays, la siguiente instrucción obtiene el primer elemento del primer formulario de la página: document.forms[0].elements[0]; • El siguiente ejemplo muestra cómo obtener directamente el último elemento del primer formulario de la página: document.forms[0].elements[document.forms[0].elements.length-1];
  • 5. • En un entorno tan cambiante como el diseño web, es muy difícil confiar en que el orden de los formularios se mantenga estable en una página web. • Por este motivo, siempre debería evitarse el acceso a los formularios de una página mediante el array document.forms. • Es más recomendable acceder a los formularios de una página a través de su nombre (atributo name) o a través de su atributo id. • El objeto document permite acceder directamente a cualquier formulario mediante su atributo name: var formularioPrincipal = document.formulario; var formularioSecundario = document.otro_formulario;
  • 6. Los elementos de los formularios también se pueden acceder directamente mediante su atributo name:
  • 7. También se puede acceder a los formularios y a sus elementos utilizando las funciones DOM de acceso directo a los nodos. El siguiente ejemplo utiliza la habitual función document.getElementById() para acceder de forma directa a un formulario y a uno de sus elementos:
  • 8. Cada elemento del formulario dispone de las siguientes propiedades útiles : • type: indica el tipo de elemento que se trata. • form: es una referencia directa al formulario al que pertenece el elemento. • name: obtiene el valor del atributo name de XHTML. Solamente se puede leer su valor, por lo que no se puede modificar. • value: permite leer y modificar el valor del atributo value de XHTML.
  • 9. Los eventos más utilizados en el manejo de los formularios son los siguientes: • onclick: evento que se produce cuando se pincha con el ratón sobre un elemento. • onchange: evento que se produce cuando el usuario cambia el valor de un elemento de texto. También se produce cuando el usuario selecciona una opción en una lista desplegable (<select>). • onfocus: evento que se produce cuando el usuario selecciona un elemento del formulario. • onblur: evento complementario de onfocus, ya que se produce cuando el usuario ha deseleccionado un elemento por haber seleccionado otro
  • 10. Obtener el valor de los campos de formulario Cuadro de texto y textarea
  • 11. Obtener el valor de los campos de formulario Radiobutton Ejemplo
  • 12. Obtener el valor de los campos de formulario Checkbox Ejemplo
  • 13. Obtener el valor de los campos de formulario Select Ejemplo • Lo que se requiere es obtener el valor del atributo value de la opción (<option>) seleccionada por el usuario. • Para obtener el valor seleccionado, deben utilizarse las siguientes propiedades: • options, es un array creado automáticamente por el navegador para cada lista desplegable y que contiene la referencia a todas las opciones de esa lista. De esta forma, la primera opción de una lista se puede obtener mediante document.getElementById("id_de_la_lista").options[0]. • selectedIndex, cuando el usuario selecciona una opción, el navegador actualiza automáticamente el valor de esta propiedad, que guarda el índice de la opción seleccionada. El índice hace referencia al array options creado automáticamente por el navegador para cada lista.
  • 14. Obtener el valor de los campos de formulario Select • Lo más importante es no confundir el valor de la propiedad selectedIndex con el valor correspondiente a la propiedad value de la opción seleccionada. • En el ejemplo anterior, la primera opción tiene un value igual a 1. • Sin embargo, si se selecciona esta opción, el valor de selectedIndex será 0, ya que es la primera opción del array options (y los arrays empiezan a contar los elementos en el número 0).
  • 15. Establecer el foco en un elemento Para asignar el foco a un elemento de XHTML, se utiliza la función focus(). El siguiente ejemplo asigna el foco a un elemento de formulario cuyo atributo id es igual a primero:
  • 16. Evitar el envío duplicado de un formulario Una buena práctica en el diseño de aplicaciones web suele ser la de deshabilitar el botón de envío después de la primera pulsación. El siguiente ejemplo muestra el código necesario: Ejemplo El botón del ejemplo anterior está definido mediante un botón de tipo <input type="button" />, ya que el código JavaScript mostrado no funciona correctamente con un botón de tipo <input type="submit" />. Si se utiliza un botón de tipo submit, el botón se deshabilita antes de enviar el formulario y por tanto el formulario acaba sin enviarse.
  • 17. Validación de Usuario y Passwords • Antes de HTML5, era común usar Javascript para validar campos requeridos, mail, números, números de documento, etc. • Con HTML5 podemos diseñar elementos de formulario que se validen en forma nativa ahorrando mucho trabajo. • Sin embargo, la validación de las contraseñas aún no se ha establecido de forma nativa, por tanto es importante ver como hacerlo usando funciones javascript de acuerdo a nuestros requerimientos. • Creemos un formulario de esta forma para nuestro ejemplo: <form ... onsubmit="return checkForm(this);"> <p>Username: <input type="text" name="username"></p> <p>Password: <input type="password" name="pwd1"></p> <p>Confirm Password: <input type="password" name="pwd2"></p> <p><input type="submit"></p> </form>
  • 18. Validación de Usuario y Passwords • El método test(): • Es un método muy útil para buscar patrones en una cadena. • Devuelve un valor Boolean que indica si existe o no un patrón en una cadena de búsqueda. • El método test comprueba si existe un patrón dentro de una cadena: devuelve true si existe y false de lo contrario. • El método test no modifica las propiedades del objeto RegExp global. • Sintaxis: rgExp.test(str) • Parámetros: rgExp: Obligatorio. Instancia de un objeto Regular Expression que contiene el patrón de expresión regular y las marcas aplicables. Str: Obligatorio. Cadena en la que se va a buscar.
  • 19. Validación de Usuario y Passwords • Evitar usuarios en blanco: if(form.username.value == "") { alert("Error: El usuario no puede estar en blanco!"); form.username.focus(); return false; }
  • 20. Validación de Usuario y Passwords • Evitar usuarios con caracteres especiales (/^w+$/): re = /^w+$/; if (!re.test (form.username.value)) { alert("Error: Usuario solo puede contener XXX caracteres!"); form.username.focus(); return false; }
  • 21. Validación de Usuario y Passwords • Controlar que coincidan los passwords if(form.pwd1.value != "" && form.pwd1.value == form.pwd2.value) { //Anidado dentro debe ir el resto de validaciones }
  • 22. Validación de Usuario y Passwords • Que el password tenga más de 6 caracteres: if(form.pwd1.value.length < 6) { alert("Error: …Más de 6 caracteres!"); form.pwd1.focus(); return false; }
  • 23. Validación de Usuario y Passwords • Que el password sea diferente del nombre de usuario: if(form.pwd1.value == form.username.value) { alert("Error: …diferente de usuario!"); form.pwd1.focus(); return false; }
  • 24. Validación de Usuario y Passwords • Que el password contenga al menos un número (0-9): re = /[0-9]/; if(!re.test(form.pwd1.value)) { alert("Error: …por lo menos un n° 0-9)!"); form.pwd1.focus(); return false; }
  • 25. Validación de Usuario y Passwords • Que el password contenga al menos una letra minúscula (a-z): re = /[a-z]/; if(!re.test(form.pwd1.value)) { alert("Error: …al menos una letra(a-z)!"); form.pwd1.focus(); return false; }
  • 26. Validación de Usuario y Passwords • Que el password contenga al menos una letra mayúscula (A-Z): re = /[A-Z]/; if(!re.test(form.pwd1.value)) { alert("Error: …al menos una letra(A-Z)!"); form.pwd1.focus(); return false; } Ejemplo
  • 27. Validación de Usuario y Passwords • Validar formulario usando HTML5: • Unos atributos de formulario simples pueden tener el mismo efecto que un montón de bibliotecas de código JavaScript. • Aquí tenemos una versión mejorada del código anterior, donde hemos añadido atributos “required” y “pattern” para aplicar pruebas de expresiones regulares en el propio formulario • También hemos añadido un evento onchange al primer campo de contraseña que actualiza el patrón requerido por el segundo campo de contraseña, lo que le obliga a ser idénticos  • Obs: W es equivalente a[^a-zA-Z0-9_] Ejemplo
  • 28. Validación de Usuario y Passwords • Cambiar el mensaje de error de HTML5 : • Dependiendo del navegador, los mensajes para required son “rellene este campo” y para pattern “ajústese al formato solicitado”. • Se pueden personalizar estos mensajes agregando unas líneas de código al ejemplo anterior. • En el ejemplo, jugamos con el atributo input title, el método setCustomValidity y la propiedad validity.patternMismatch Ejemplo
  • 29. EJERCICIO Cree un formulario con los campos nombre, apellido, mail, nombre de usuario y contraseña. Agregue radiobutton de sexo y ciudades con <select>. Agregue un estilo personalizado con CSS, CSS3. Valide como requeridos todos los campos. Tenga como válida solo una opción en el radiobutton y el select Valide las contraseñas como se ha visto en los ejemplos.
  • 30. FUENTES • http://www.the-art-of- web.com/javascript/validate- password/#box1 • http://librosweb.es/libro/javascript/capitul o_7.html • HTML5 FOR MASTERMINDS, JD GAUCHAT (http://www.amazon.com/HTML5- Masterminds-2nd-Edition- revolutionary/dp/1481138502)