Validación personalizada de campo obligatorio
Tengo un formulario con muchos campos de entrada. He puesto validaciones html5
<input type="text" name="topicName" id="topicName" required />
cuando envío el formulario sin llenar este cuadro de texto, muestra un mensaje predeterminado como
"Please fill out this field"
¿Alguien puede ayudarme a editar este mensaje?
Tengo un código javascript para editarlo, pero no funciona
$(document).ready(function() {
var elements = document.getElementsByName("topicName");
for (var i = 0; i < elements.length; i++) {
elements[i].oninvalid = function(e) {
e.target.setCustomValidity("");
if (!e.target.validity.valid) {
e.target.setCustomValidity("Please enter Room Topic Title");
}
};
elements[i].oninput = function(e) {
e.target.setCustomValidity("");
};
}
})
Validaciones personalizadas por correo electrónico
Tengo el siguiente formulario HTML
<form id="myform">
<input id="email" name="email" type="email" />
<input type="submit" />
</form>
Mensajes de validación que quiero como.
Campo obligatorio: Introduzca la dirección de correo electrónico Correo electrónico
incorrecto: 'testing @ .com' no es una dirección de correo electrónico válida. ( aquí, la dirección de correo electrónico ingresada se muestra en el cuadro de texto )
He probado esto.
function check(input) {
if(input.validity.typeMismatch){
input.setCustomValidity("'" + input.value + "' is not a Valid Email Address.");
}
else {
input.setCustomValidity("");
}
}
Esta función no funciona correctamente. ¿Tiene alguna otra forma de hacerlo? Será apreciado.
javascript
jquery
html
Sumit Bijvani
fuente
fuente
Respuestas:
Fragmento de código
Dado que esta respuesta llamó mucho la atención, aquí hay un buen fragmento configurable que se me ocurrió:
Uso
→ jsFiddle
Más detalles
defaultText
se muestra inicialmenteemptyText
se muestra cuando la entrada está vacía (se borró)invalidText
se muestra cuando el navegador marca la entrada como no válida (por ejemplo, cuando no es una dirección de correo electrónico válida)Puede asignar una cadena o una función a cada una de las tres propiedades.
Si asigna una función, puede aceptar una referencia al elemento de entrada (nodo DOM) y debe devolver una cadena que luego se muestra como el mensaje de error.
Compatibilidad
Probado en:
Respuesta antigua
Puede ver la revisión anterior aquí: https://stackoverflow.com/revisions/16069817/6
fuente
please fill out this field
puede cambiar este mensaje aPlease enter email address
setCustomValidity()
correos electrónicos vacíos solo después de que el evento de desenfoque se haya disparado una vez, por lo que solo necesitamos llamarlo al cargar DOM también. Vea el ejemplo actualizado / jsFiddle.if (input.value == "") {
, en su lugar, leíif (input.value.trim() == "") {
: funciona.Simplemente puede lograr esto usando un atributo no válido, consulte este código de demostración
Demostración de Codepen: https://codepen.io/akshaykhale1992/pen/yLNvOqP
fuente
oninput="setCustomValidity('')"
: stackoverflow.com/a/16878766/1729850HTML:
JAVASCRIPT:
Demostración:
http://jsfiddle.net/patelriki13/Sqq8e/
fuente
Prueba esto:
Probé esto en Chrome y FF y funcionó en ambos navegadores.
fuente
<b>Error: </b> Incorrect email address
.setCustomValidity("")
no ayuda. ¿Hay algún otro parámetro que deba configurarse? Por favor avise.Hombre, nunca he hecho eso en HTML 5, pero lo intentaré. Eche un vistazo a este violín.
He usado algunos eventos y propiedades nativos de jQuery, HTML5 y un atributo personalizado en la etiqueta de entrada (esto puede causar problemas si intenta validar su código). No probé en todos los navegadores, pero creo que puede funcionar.
Este es el código JavaScript de validación de campo con jQuery:
Agradable. Aquí está el formato html simple:
El atributo
requiredmessage
es el atributo personalizado del que hablé. Puede configurar su mensaje para cada campo requerido allí porque jQuery obtendrá de él cuando muestre el mensaje de error. No tiene que configurar cada campo directamente en JavaScript, jQuery lo hace por usted. Esa expresión regular parece estar bien (¡al menos bloquea tu[email protected]
! Jaja)Como puede ver en el violín, hago una validación adicional del evento de formulario de envío ( esto también va en document.ready ):
Espero que esto funcione o te ayude de todos modos.
fuente
data-
prefijo estándar ; ejdata-requiredMessage
. Con jQuery, esto es accesible con$(element).data('requiredMessage')
; No conozco la interfaz DOM estándar de la parte superior de mi cabeza.Esto funciona bien para mi:
y el formulario con el que lo estoy usando (truncado):
fuente
Puede hacer esto configurando un detector de eventos para los 'no válidos' en todas las entradas del mismo tipo, o solo una, según lo que necesite, y luego configurando el mensaje adecuado.
La segunda parte del script, el mensaje de validez se restablecerá, ya que de lo contrario no será posible enviar el formulario: por ejemplo, esto evita que el mensaje se active incluso cuando la dirección de correo electrónico haya sido corregida.
Además, no es necesario que configure el campo de entrada como se requiere, ya que el 'inválido' se activará una vez que comience a escribir la entrada.
Aquí hay un violín para eso: http://jsfiddle.net/napy84/U4pB7/2/ ¡ Espero que ayude!
fuente
Utilice el atributo "título" en cada etiqueta de entrada y escriba un mensaje en él.
fuente
Solo necesita obtener el elemento y usar el método setCustomValidity.
Ejemplo
fuente
simplemente puede usar el atributo oninvalid = " , con el bingding this.setCustomValidity () eventListener!
Aquí están mis códigos de demostración (¡puede ejecutarlos para verificar!)
Link de referencia
http://caniuse.com/#feat=form-validation
https://www.w3.org/TR/html51/sec-forms.html#sec-constraint-validation
fuente
Puede agregar este script para mostrar su propio mensaje.
Para otras validaciones, como la falta de coincidencia de patrones, puede agregar una condición adicional if else
me gusta
hay otras condiciones de validez como rangeOverflow, rangeUnderflow, stepMismatch, typeMismatch, valid
fuente