Foros del Web » Programando para Internet » Jquery »

duda jquery.validate

Estas en el tema de duda jquery.validate en el foro de Jquery en Foros del Web. Buenos dias tengan todos ustedes, vengo a pedirles de que por favor me ayuden con este problema: estoy utilizando el plugin de validacion de jquery ...
  #1 (permalink)  
Antiguo 16/10/2013, 11:14
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta duda jquery.validate

Buenos dias tengan todos ustedes, vengo a pedirles de que por favor me ayuden con este problema:

estoy utilizando el plugin de validacion de jquery llamado jquery.validate.js, pero necesito que, cuando (y solo cuando) se cumplan las condiciones de validacion expuestos en las reglas del plugin, ejecute una peticion ajax (el motivo de la peticion es irrelevante) aqui expongo el codigo:

Código:
$(document).ready(function() {
		function validaform()
		{
			$("#formcontacto").validate({
				rules: {
					no_fact: { required: true, digits: true},
					generada: { required: true, date: true},
					vencimiento: { required: true, date: true},
					concepto: { required: true },
					descuento: { number: true , maxlength: 5, minlength: 5},
					valor: { required: true , number: true },
					recibido: { required: true , maxlength: 2, minlength: 2},
					fecha: { required: true , date: true}
				},
				messages: {
					no_fact: "el campo 'No Factura' es obligatorio y debe ser un numero",
					generada: "el campo 'Generada' es obligatorio y debe ser una fecha elegida en el calendario",
					vencimiento: "el campo 'Vencimiento' es obligatorio y debe ser una fecha elegida en el calendario",
					concepto: "el campo 'Concepto' es obligatorio",
					descuento: "el campo 'Descuento' debe ser un numero decimal y tener max y min 4 caracteres ej: 25.0",
					valor: "el campo 'Valor' es olbigatorio y debe ser un numero entero o decimal",
					recibido: "el campo '¿Recibido?' es obligatorio y debe tener como maximo y minimo dos(2) digitos (si/no)",
					fecha: "el campo 'Fecha de elaboracion' es obligatorio y debe ser una fecha elegida en el calendario"
				}
			});

			return true;
		}
		if(validaform())
		{
			$("#enviar").click(function(){
				var no_factura = $('#no_fact').val();

				$.ajax({
					type: 'POST',
					url:'http://localhost/facturas/index.php/Factura_controller/comparar_nofactura',
					data: {no_factura : no_factura },
					success: function(resp)
					{
						if (resp === "") {
							$('#formcontacto').submit();
						}
						else
						{
							alert("El numero de factura especificado ya existe");

						}
					}
				});
				return false	
			});
		}
	});
Este codigo lo realize guiandome con un ejemplo de google donde hacian la validacion sin el plugin, pero cuando trate de realizarlo en mi caso, no funciono.

En resumen, lo que quiero es que, solo en el caso de que se cumpla esto (es decir, si los registros del formulario cumplen con estas reglas de validacion)....

Código:
			$("#formcontacto").validate({
				rules: {
					no_fact: { required: true, digits: true},
					generada: { required: true, date: true},
					vencimiento: { required: true, date: true},
					concepto: { required: true },
					descuento: { number: true , maxlength: 5, minlength: 5},
					valor: { required: true , number: true },
					recibido: { required: true , maxlength: 2, minlength: 2},
					fecha: { required: true , date: true}
				},
				messages: {
					no_fact: "el campo 'No Factura' es obligatorio y debe ser un numero",
					generada: "el campo 'Generada' es obligatorio y debe ser una fecha elegida en el calendario",
					vencimiento: "el campo 'Vencimiento' es obligatorio y debe ser una fecha elegida en el calendario",
					concepto: "el campo 'Concepto' es obligatorio",
					descuento: "el campo 'Descuento' debe ser un numero decimal y tener max y min 4 caracteres ej: 25.0",
					valor: "el campo 'Valor' es olbigatorio y debe ser un numero entero o decimal",
					recibido: "el campo '¿Recibido?' es obligatorio y debe tener como maximo y minimo dos(2) digitos (si/no)",
					fecha: "el campo 'Fecha de elaboracion' es obligatorio y debe ser una fecha elegida en el calendario"
				}
			});

se ejecute esta peticion ajax:


Código:
			$("#enviar").click(function(){
				var no_factura = $('#no_fact').val();

				$.ajax({
					type: 'POST',
					url:'http://localhost/facturas/index.php/Factura_controller/comparar_nofactura',
					data: {no_factura : no_factura },
					success: function(resp)
					{
						if (resp === "") {
							$('#formcontacto').submit();
						}
						else
						{
							alert("El numero de factura especificado ya existe");

						}
					}
				});
				return false	
			});

les agradesco mucho lo que me puedan ayudar al respecto
  #2 (permalink)  
Antiguo 18/10/2013, 08:57
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: duda jquery.validate

tienes varios errores:

1 - llamas a validaform en el onready, recuerda que esto sucede cuando se carga el DOM, pero en ese momento el formulario está apenas cargado, el usuario no ha interactuado con él

2 - en la función validaform siempre retorna true, la idea es que regrese lo que validó dicha función del plugin

3 - seria recomendable que la función de envio y validación las colocaras como evento del onsubmit del form, retornando false para que el form no se envie de forma tradicional.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: ajax, formulario, validación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:44.