Problema en Javascript

Kr4n3oK

Buenas estoy utilizando esta función para comprobar que un campo esta relleno:

function comprobarVacio(Vacio){
		var actual = Vacio.name
		
		if(Vacio.value == ""){
		alert("Porfavor el campo " + actual + " debe estar relleno para cumplimentar debidamente el correo.Gracias");
		
		}
		
	}

Estoy intentando que me vuelva a enfocar a ese campo para que el usuario no pueda seguir escribiendo hasta que lo rellene, pero no consigo hacerlo.
Que debo hacer, he probado sacando la id, pero nada, tal que así:

function comprobarVacio(Vacio){
		var actual = Vacio.name
		var id = Vacio.id;
			if(Vacio.value == ""){
			alert("Porfavor el campo " + actual + " debe estar relleno para cumplimentar debidamente el correo.Gracias");
			id.focus();
			}
			
	}

Saludos y gracias.

HeXaN

Tienes que pasarle a tu función el formulario y sacar la ID del cacharro al que quieres hacerle focus, algo tal que así:

function Validar(f) {
        if (f.usuario.value=="") {
           document.getElementById("error").innerHTML = "Rellene todos los campos.";
           f.usuario.focus();
           return false;
    }
}

Donde "usuario" es mi caja de texto que quiero comprobar y "error" es una etiqueta invisible que se rellena con los errores que yo vea oportunos.

2 respuestas
EnZo
function comprobarVacio(idElement)
{
    var element = (typeof idElement == "string") ? document.getElementById(idElement) : idElement;
    if(element.value.length == 0)
    {
        alert("Porfavor el campo " + element.name + " debe estar relleno para cumplimentar debidamente el correo.Gracias");
        element.focus();
    }                   
}

Tu input deberia llevar un id obligatoriamente y para verificar si está vacio debes ejecutarlo con el evento blur.
<input type="text" name="Nombre" id="idNombre" onblur="comprobarVacio(this)" />

No lo he probao, pero deberia ir.

PD: No uses alerts, haz mejor lo que te dice #2 y pon errores en el cuerpo de la web.

2 respuestas
tada

No lo he probado pero la idea sería algo tal que así:

function comprobarVacio(Vacio){
                var actual = Vacio.name
                var id = Vacio.id;
                        if(Vacio.value == ""){
                        alert("Porfavor el campo " + actual + " debe estar relleno para cumplimentar debidamente el correo.Gracias");
                        var input = document.getElementById(id);
                        input.focus();
                        }
                        
}

La idea es que tu id tal y como lo tienes parece un string, así que tienes que usar getElementById para buscar el elemento con esa id y después hacerle el focus.

Lo de #2 y #3 tiene buena pinta también.

1 respuesta
Kr4n3oK

Gente ya lo he arreglado utilizando la variable que se le pasa como this, osease
Vacio.focus();

Sobre lo de no usar alert, pues si, es mejor avisar por html y así lo haré xd

1 respuesta
EnZo

#5 Guay! :)

#4 Si Vacio es el objeto input por que lo redeclaras con getEbId?
Para hacer eso pon Vacio.focus();

2 respuestas
tada

#3 #6 Si Vacio es el objeto input que ya contiene su id, porque en tu función le pasas la id por parametro para luego usar getEbId, si se supone que ya la pasa a través de Vacio?

Yo lo he puesto así porque no ha dicho que Vacio sea el elemento input, lo mismo era otro tipo de objeto..

2 respuestas
Kr4n3oK

#6 Escúchame a veces me hago la picha un lio cuando me falla algo y como de costumbre nos pasa a los programadores, al final, el problema es una puta tontería de mierda jajajaja really awesome

#6 #7 Ya aprovecho y hago otra pregunta, resulta que he hecho un visor de imágenes, así como un SliderShow, como puedo hacer para controlar la velocidad de mostrar la siguiente imagen?

Es decir, si le das a siguiente te salta a la otra y ya está, pero se queda mas bonito si va apareciendo poco a poco, la verdad que le he dado vueltas a la cosa y no consigo averiguar nada, por cierto, no quiero que me digáis toooodo el código, si no, la idea principal xdd.

1 respuesta
tada

#8 http://api.jquery.com/animate/

Puedes pasarle la duración de la animación que supongo que es lo que necesitas..

Duration
Durations are given in milliseconds; higher values indicate slower animations, not faster ones. The default duration is 400 milliseconds. The strings 'fast' and 'slow' can be supplied to indicate durations of 200 and 600 milliseconds, respectively.

1 respuesta
Kr4n3oK

#9 Ty :)

EnZo

#7 En mi funcion o le pasas el id como string o le pasas el objeto input. Valen las dos. Si te fijas hay un comparador.

"Yo lo he puesto así porque no ha dicho que Vacio sea el elemento input, lo mismo era otro tipo de objeto.. "
Que otro objeto puede ser? Además si estas usando el atributo name id y value? Tu funcion no deja dudas que "Vacio" ha de ser un objeto input.

1 respuesta
tada

#11 En parte tienes razón, pero es una simple función y no está el resto de código, depende de su programación bien podría haber inventado un objeto.

Vacio=new Object();
Vacio.id="xxx";
Vacio.name="xxxx";
Vacio.value="xxxx";

comprobarVacio(Vacio);

Lo se, no es lo normal pero se puede hacer..

1 respuesta
EnZo

#12 Claro que se puede hacer xD. Pero no es ni optimo ni lógico.

Usuarios habituales

  • EnZo
  • tada
  • Kr4n3oK
  • HeXaN