Foros del Web » Programando para Internet » Javascript »

Campos obligatorios no vacíos

Estas en el tema de Campos obligatorios no vacíos en el foro de Javascript en Foros del Web. Hola buenas, he implementado este script para hacer que al enviar un formulario se compruebe que los campos obligatorios no están vacíos, y siempre me ...
  #1 (permalink)  
Antiguo 09/02/2006, 06:16
Avatar de sir_bowen  
Fecha de Ingreso: junio-2005
Mensajes: 184
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta Campos obligatorios no vacíos

Hola buenas, he implementado este script para hacer que al enviar un formulario se compruebe que los campos obligatorios no están vacíos, y siempre me sale como que están vacíos (cuando no es cierto)



Código PHP:
<script language="javascript" type="text/javascript">
function 
vacio(q){
    if(
q!=""){return true}
    else{return 
false}
}
function 
valida(F){
    if((
vacio(F.unidad_tut.value)==false)||(vacio(F.orden_tut.value)==false)||(vacio(F.talentonivel_tut.value)==false)){
    
alert("Por favor, rellene todos los campos obligatorios")
    return 
false
    
}else{
    return 
true
    
}
}
</script> 


El formulario tiene varios campos, entre los que se encuentran unidad_tut, orden_tut y talentonivel_tut. Tengo en el evento onSubmit del formulario:
Código PHP:
onSubmit="return valida(this)" 
Yo creía que para comprobar que una cadena estaba vacía bastaba con el código que pongo en la función vacio. Encontré por ahí varias funciones que comprobaban si había espacios en blanco, pero no me sirven, ya que los campos pueden tener varias palabras...

Puede alguien echarme una mano?

Muchas gracias

Un saludo
  #2 (permalink)  
Antiguo 09/02/2006, 06:28
Avatar de sir_bowen  
Fecha de Ingreso: junio-2005
Mensajes: 184
Antigüedad: 18 años, 10 meses
Puntos: 0
Acabo de darme cuenta de que dentro de la funcion valida las condiciones irían al reves. Es decir, si lo que devuelve vacío es true entonces mostrar error...

Pero da igual, lo pruebo solo con un campo y siempre me dice que está vacío...

Saludos
  #3 (permalink)  
Antiguo 09/02/2006, 06:42
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Buenas.

Te paso una función que uso para validar campos obligatorios, que se adpata fácil a cualquier formulario y además te indica cuál es el campo que falta completar.

Código:
function validarObligatorios() {
	var msg = "";
	var campoNombre= document.frm.nombre_cl.value;
	var campoApellido = document.frm.apellido_cl.value;
	
	if (campoNombre== "") {
		msg += "Debe ingresar su nombre\n";
	}

	if (campoApellido == "") {
		msg += "Debe ingresar su apellido\n";
	}

	if (msg != "") {
		window.alert(msg);
		return false;
	}
	return true;
}
El funcionamiento es simple. Al principio incializa la variable msg que va a guardar el mensaje de error. Por cada campo que esté vacío, agrega una línea a msg. En el último if, se fija si msg es distinto de vacío. Si es así, significa que hay campos obligatorios que quedaron vacíos. En ese caso, la función devuelve false.

Si msg está vacío, es que el formulario está bien, y entonces devuelve true. no hace falta poner este return en un else, porque sí entra en el if anterior, la función ya va a tener un return, y al llegar a ese punto, va a cortarse su ejecución: return true no va a leerse.

Suerte
Califa
  #4 (permalink)  
Antiguo 09/02/2006, 06:57
Avatar de sir_bowen  
Fecha de Ingreso: junio-2005
Mensajes: 184
Antigüedad: 18 años, 10 meses
Puntos: 0
Hola,
acabo de cambiar mi código por el tuyo (adaptado a mis variables), y me sale todo el rato como al princio. Aunque rellene alguno de los campos, me sale el alert con todos los campos como vacíos.

La llamada a la función la sigo haciendo desde el formulario... en el evento
Código PHP:
onSubmit()="return valida();" 
Nuse porque....

Saludos
  #5 (permalink)  
Antiguo 09/02/2006, 12:24
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
¿Estás seguro de que las "rutas" están bien? Por ejemplo, si usás el que te pasé tal como está, el formulario tiene que tener un name="frm" y los "name" de los campos tienen que coincidir en el código js y en el html.

Una prueba que podrías hacer es poner en la primera línea de la función

Código:
window.alert(document.nombre_form.algun_campo);
window.alert(document.nombre_form.algun_campo.value);
y ver qué pasa. El primero debería decirte qué tipo de elementoHTML es el campo y el segundo, el valor.

Si no funciona, colgá todo el código a ver si se puede encontrar el error...

Suerte
Califa
  #6 (permalink)  
Antiguo 10/02/2006, 02:55
Avatar de sir_bowen  
Fecha de Ingreso: junio-2005
Mensajes: 184
Antigüedad: 18 años, 10 meses
Puntos: 0
De acuerdo

Ya funciona!!!
La culpa era mía...
Porque utilizaba campos de tipo select y no les metia un value. Simplemente en la página de alta cogía el campo mediante $_POST['campo']. Pero al crear la lista desplegable dejaba cada item sin un value.

Ahora ya está...
Si ya sabía yo....

Bueno, lo siento. Y muchas gracias por todo

Saludos
  #7 (permalink)  
Antiguo 10/02/2006, 06:16
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Excelente, y no hay de qué.

Suerte
Califa
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 15:44.