¿Hay alguna manera de requerir que las entradas en dos campos de formulario coincidan usando HTML5? ¿O todavía hay que hacer esto con javascript? Por ejemplo, si tiene dos campos de contraseña y desea asegurarse de que un usuario haya ingresado los mismos datos en cada campo, ¿existen algunos atributos u otra codificación que se pueda hacer para lograrlo?
98
Respuestas:
No exactamente con la validación de HTML5, pero un poco de JavaScript puede resolver el problema, siga el ejemplo a continuación:
fuente
oninput="check(this)"
al primer campo de contraseña y 2) cambiandoinput.value
la función adocument.getElementById('password_confirm').value
. Así se convierte enif (document.getElementById('password_confirm').value != document.getElementById('password').value)
Puede hacerlo con patrones de entrada de expresiones regulares (compruebe la compatibilidad del navegador )
fuente
pattern
atributo debería omitirse para elpassword_two
campo. Como actualmente, si escribe una contraseña, que tiene menos de 6 caracteres en elpassword_two
campo, mientras la dejapassword
vacía, mostrará unPlease enter the same Password as above
mensaje de validación. Lo que podría ser más confuso: lo mismo sucede si ingresa en ambos campos exactamente la misma contraseña, que tiene menos de 6 caracteres.Una solución simple con un mínimo de javascript es utilizar el patrón de atributo html (compatible con la mayoría de los navegadores modernos). Esto funciona estableciendo el patrón del segundo campo en el valor del primer campo.
Desafortunadamente, también necesita escapar de la expresión regular, para la cual no existe una función estándar.
fuente
<input type="password" name="password" oninput="document.getElementById('confirm').pattern = this.value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')" required><input type="password" id="confirm" name="confirm" pattern="" title="Fields must match" required>
no legible como el suyo, pero evita el script / función por separado.Se requerirá JavaScript, pero la cantidad de código se puede mantener al mínimo mediante el uso de un
<output>
elemento intermediario y unoninput
controlador de formulario para realizar la comparación (los patrones y la validación podrían aumentar esta solución, pero no se muestran aquí por simplicidad):fuente
No solo HTML5 sino un poco de JavaScript
Haga clic [aquí] https://codepen.io/diegoleme/pen/surIK
HTML
JAVASCRIPT
fuente
Las respuestas que usan patrón y una expresión regular escriben la contraseña del usuario en las propiedades de entrada como texto sin formato
pattern='mypassword'
. Esto solo será visible si las herramientas de desarrollo están abiertas, pero aún así no parece una buena idea.Otro problema con el uso de patrón para verificar una coincidencia es que probablemente desee usar patrón para verificar que la contraseña tiene la forma correcta, por ejemplo, letras y números mezclados.
También creo que estos métodos no funcionarán bien si el usuario cambia entre entradas.
Aquí está mi solución que usa un poco más de JavaScript pero realiza una simple verificación de igualdad cuando se actualiza cualquiera de las entradas y luego establece una validez HTML personalizada. Ambas entradas aún se pueden probar para un patrón como el formato de correo electrónico o la complejidad de la contraseña.
Para una página real, cambiaría los tipos de entrada a 'contraseña'.
fuente
Como se ha mencionado en otras respuestas, no existe una forma puramente HTML5 de hacer esto.
Si ya está utilizando JQuery , esto debería hacer lo que necesita:
fuente