Tengo una página web con 3 formularios. No anidados, solo uno después del otro (son casi idénticos, solo una variable oculta que es diferente). Un usuario solo completará un formulario, y me gustaría validar / etc todos los formularios con un solo script JS.
Entonces, ¿cómo, cuando un usuario hace clic en el botón de envío del formulario n. ° 1, hago que mi script js solo se ocupe de los campos en el formulario 1? Supongo que tiene algo que ver con $ (this) .parents, pero no estoy seguro de qué hacer con él.
Mi script de validación (que utilicé en otro lugar, con solo una forma) se ve así:
$(document).ready(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var nameVal = $("#name").val();
if(nameVal == '') {
$("#name").after('Please enter your name.');
hasError = true;
}
if(hasError == false) {blah blah do all the processing stuff}
Entonces, ¿debo reemplazar cosas como $ ("# name"). Val () con $ (this) .parents ('form'). Name.val ()? ¿O hay una mejor manera de hacerlo?
¡Gracias!
var form = $(this).form
como en Javascript normal:function onClick(button) { var form = button.form; }
???Encontré esta respuesta al buscar cómo encontrar la forma de un elemento de entrada. Quería agregar una nota porque ahora hay una mejor manera que usar:
No estoy seguro de cuándo se agregó a jQuery, pero el método más cercano () hace exactamente lo que se necesita de manera más limpia que usar los padres (). Con lo más cercano, el código se puede cambiar a esto:
Atraviesa y encuentra el primer elemento que coincide con lo que está buscando y se detiene allí, por lo que no es necesario especificar: primero.
fuente
Para obtener el formulario que contiene el envío, ¿por qué no solo
El camino más fácil y rápido hacia el resultado.
fuente
utilicé el siguiente método y funcionó bien para mí
$('#mybutton').closest("form")
hizo el truco para mífuente
Eileen: No, no lo es
var nameVal = form.inputname.val();
. Debería ser cualquiera ...en jQuery:
O en JavaScript:
O una combinación:
Con jQuery, incluso podría recorrer todas las entradas en el formulario:
fuente