Tengo este formulario en mi aplicación y lo enviaré a través de AJAX, pero quiero usar HTML5 para la validación del lado del cliente. Entonces quiero poder forzar la validación del formulario, tal vez a través de jQuery.
Quiero activar la validación sin enviar el formulario. ¿Es posible?
jquery
html
validation
razenha
fuente
fuente
Respuestas:
Para verificar si cierto campo es válido, use:
Para verificar si el formulario es válido, use:
Si desea mostrar los mensajes de error nativos que tienen algunos navegadores (como Chrome), desafortunadamente la única forma de hacerlo es enviando el formulario, de esta manera:
Espero que esto ayude. Tenga en cuenta que la validación HTML5 no es compatible con todos los navegadores.
fuente
$myForm.submit()
con$myForm.find(':submit').click()
$('<input type="submit">').hide().appendTo($myForm).click().remove();
checkValidity()
, pero también tiene un error peligroso.checkValidity()
es lo que activa los mensajes de error del navegador nativo, no el clic del botón de enviar. Si tiene un detector de eventos que escucha el clic del botón Enviar, lo activará cuando haga `$ myForm.find (': submit'). Clic ()`, que se activará y causará una recursión infinita.Encontré esta solución para trabajar para mí. Simplemente llame a una función de JavaScript como esta:
action="javascript:myFunction();"
Entonces tienes la validación html5 ... realmente simple :-)
fuente
action="javascript:0"
en el<form>
y con destinoclick
evento en el<button>
queMyFunction()
y todo funcionó muy bien. Mantengo todo JS fuera de HTML.MyFunction
luego puede probarform.checkValidity()
para continuar.onsubmit()
es casi siempre mejor que el enlace a un botónonclick()
, ya que hay otras formas de enviar un formulario. (Notablementereturn
presionando la tecla).action="javascript:myFunction();"
oaction="javascript:0"
fonctiona en última versión de Firefox (67). Sin embargo, funciona en Chrome.de: validación de formulario html5
fuente
reportValidity
solo es compatible con Chrome 40.0$("form")[0].reportValidity()
. Necesito eso en caso de que la verificación de validez falle.el siguiente código me funciona,
fuente
reportValidity()
es la mejor función para resaltar los campos obligatorios.Aquí hay una forma más general que es un poco más limpia:
Cree su formulario de esta manera (puede ser un formulario ficticio que no hace nada):
Enlace todos los formularios que realmente no desea enviar:
Ahora supongamos que tiene un
<a>
(dentro de<form>
) que al hacer clic desea validar el formulario:Algunas notas aquí:
checkValidity()
es suficiente (al menos en Chrome). Si otros pudieran agregar comentarios al probar esta teoría en otros navegadores, actualizaré esta respuesta.<form>
. Esta era solo una forma limpia y flexible de tener una solución de uso general.fuente
Puede llegar tarde a la fiesta, pero de alguna manera encontré esta pregunta al intentar resolver un problema similar. Como ningún código de esta página funcionó para mí, mientras tanto, encontré una solución que funciona según lo especificado.
El problema es cuando su
<form>
DOM contiene un solo<button>
elemento, una vez disparado, que<button>
automáticamente sumbitará la forma. Si juegas con AJAX, probablemente debas evitar la acción predeterminada. Pero hay un problema: si lo hace, también evitará la validación básica de HTML5. Por lo tanto, es una buena decisión evitar los valores predeterminados de ese botón solo si el formulario es válido. De lo contrario, la validación HTML5 lo protegerá de enviar. jQuerycheckValidity()
ayudará con esto:jQuery:
El código descrito anteriormente le permitirá utilizar la validación básica de HTML5 (con coincidencia de tipo y patrón) SIN enviar el formulario.
fuente
Usted habla de dos cosas diferentes: "validación HTML5" y validación de formulario HTML usando javascript / jquery.
HTML5 "tiene" opciones integradas para validar un formulario. Tal como usar el atributo "requerido" en un campo, que podría (basado en la implementación del navegador) fallar el envío del formulario sin usar javascript / jquery.
Con javascrip / jquery puedes hacer algo como esto
fuente
triggerHtml5Validation()
función. El código anterior adjuntará el evento de envío a su formulario; al enviar, intercepta el evento y valida el formulario. Si nunca desea enviar el formulario, simplementereturn false;
y el envío nunca ocurrirá.return (valid) ? true : false
===return valid
. :)return valid
no devuelve falso para valores nulos / indefinidos. Pero en realidad no importa, la respuesta fue un seudocódigo de todos modos, el punto es: use return false para no enviar el formulario ^^fuente
Para verificar todos los campos de formulario requeridos sin usar el botón Enviar, puede usar la siguiente función.
Debe asignar el atributo requerido a los controles.
fuente
No necesita jQuery para lograr esto. En su formulario agregue:
o en JavaScript:
En su
buttonSubmit
función (o como se llame), puede enviar el formulario utilizando AJAX.buttonSubmit
solo se le llamará si su formulario está validado en HTML5.En caso de que esto ayude a alguien, aquí está mi
buttonSubmit
función:Algunos de mis formularios contienen varios botones de envío, de ahí esta línea
if (submitvalue == e.elements[i].value)
. Establecí el valor desubmitvalue
usar un evento de clic.fuente
Tuve una situación bastante compleja, donde necesitaba múltiples botones de envío para procesar diferentes cosas. Por ejemplo, Guardar y Eliminar.
La base era que también era discreto, por lo que no podía simplemente convertirlo en un botón normal. Pero también quería utilizar la validación html5.
Además, el evento de envío se anuló en caso de que el usuario presione enter para activar el envío predeterminado esperado; en este ejemplo guardar.
Estos son los esfuerzos del procesamiento del formulario para seguir funcionando con / sin javascript y con la validación html5, con eventos de envío y clic.
xHTML
JavaScript
La advertencia sobre el uso de Javascript es que el onclick predeterminado del navegador debe propagarse al evento de envío DEBE ocurrir para mostrar los mensajes de error sin admitir cada navegador en su código. De lo contrario, si el evento de clic se anula con event.preventDefault () o devuelve falso, nunca se propagará al evento de envío del navegador.
Lo que hay que señalar es que en algunos navegadores no se activará el envío del formulario cuando el usuario presione Intro, sino que se activará el primer botón de envío del formulario. Por lo tanto, hay una consola.log ('envío de formulario') para mostrar que no se dispara.
fuente
jQuery
explícitamente. Se diferencia en que maneja el procesamiento de la validación HTML5 con múltiples botones de envío y evita el envío del formulario AJAX cuando no es válido. Por defecto a lasave
acción cuando el usuario presiona laenter
tecla en el teclado. Que en el momento de mi publicación, ninguna de las respuestas proporcionadas era una solución para los botones de envío múltiple o la captura de la tecla Intro para evitar el envío de ajax.Puede hacerlo sin enviar el formulario.
Por ejemplo, si el botón de envío de formulario con ID "buscar" está en el otro formulario. Puede llamar al evento de clic en ese botón de envío y llamar a ev.preventDefault después de eso. Para mi caso, valido el formulario B de la presentación del formulario A. Me gusta esto
fuente
Esta manera funciona bien para mí:
Agregue
onSubmit
atributo en suform
, no olvide incluirloreturn
en el valor.Define la función.
fuente
No es la mejor respuesta, pero funciona para mí.
fuente
Sé que esto ya ha sido respondido, pero tengo otra posible solución.
Si usa jquery, puede hacer esto.
Primero cree un par de extensiones en jquery para poder reutilizarlas según sea necesario.
Luego haga algo como esto donde quiera usarlo.
fuente
fuente
Esto funcionó para mostrar los mensajes de error HTML 5 nativos con la validación del formulario.
Nota: RegForm es el
form id
.Referencia
La esperanza ayuda a alguien.
fuente
Esta es una forma bastante directa de hacer que HTML5 realice la validación de cualquier formulario, al mismo tiempo que tiene un control JS moderno sobre el formulario. La única advertencia es que el botón Enviar debe estar dentro de
<form>
.html
js
fuente
Creo que el mejor enfoque
utilizará jQuery Validation complemento de que utiliza las mejores prácticas para la validación de formularios y también tiene un buen soporte para el navegador. Por lo tanto, no debe preocuparse por los problemas de compatibilidad del navegador.
Y podemos usar la función de validación jQuery valid () que verifica si el formulario seleccionado es válido o si todos los elementos seleccionados son válidos sin enviar el formulario.
fuente
De acuerdo con la pregunta, la validez de html5 debe poder validarse utilizando jQuery al principio y en la mayoría de las respuestas esto no está sucediendo y la razón de esto es la siguiente:
mientras se valida usando la función predeterminada del formulario html5
debemos entender que jQuery devuelve una matriz de objetos, mientras seleccionamos así
por lo tanto, debe especificar el primer índice para que la función checkValidity () funcione
Aquí está la solución completa:
fuente