Foros del Web » Programando para Internet » Javascript »

Formulario - Controlando envio con indexOf()

Estas en el tema de Formulario - Controlando envio con indexOf() en el foro de Javascript en Foros del Web. Buenas, Estoy intentando controlar el envio de un formulario por el contenido de un DIV controlado por una parte de código realizada en AJAX que ...
  #1 (permalink)  
Antiguo 26/10/2009, 03:55
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Formulario - Controlando envio con indexOf()

Buenas,

Estoy intentando controlar el envio de un formulario por el contenido de un DIV controlado por una parte de código realizada en AJAX que muestra una validación externa de los datos introducidos de la siguiente manera:

Código:
	
	if(window.document.getElementById('idcontenedordiv').indexOf('Valordetexto')<>-1){
		return (false);
	}
Pero no hay tu tia... La verdad es que el javascript nunca a sido lo mio... ¿Que hago mal?

Saludos
__________________
Consultor SEO / WPO
[EXP] Fuego de Vida ->sitio web
  #2 (permalink)  
Antiguo 26/10/2009, 04:07
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Formulario - Controlando envio con indexOf()

primero, getElementById devuelve un objeto Element del elemento con dicho id. en los objetos Element no existe el metodo indexOf, mas bien este metodo es heredado de los string. para leer el contenido de un elemento tenemos la propiedad innerHTML, aunque este no es estandar la gran mayoria de los navegadores actuales la reconocen. innerHTML, juntamente con su contenido tambien muestra el codigo HTML referente al elemento. y segundo, el operador <> no existe en javascript, el equivalente es !=, para mas referencia de operadores comparativos http://www.w3schools.com/js/js_comparisons.asp
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 26/10/2009, 04:13
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Respuesta: Formulario - Controlando envio con indexOf()

Hola zerokilled!

En tal caso entiendo que esto tendria que cumplir mis necesidades...?

Cita:
if(window.document.getElementById('idcontenedordiv ').innerHTML!="textoquesea"){
return (false);
}
Gracias apañero!
__________________
Consultor SEO / WPO
[EXP] Fuego de Vida ->sitio web
  #4 (permalink)  
Antiguo 26/10/2009, 04:17
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Formulario - Controlando envio con indexOf()

dependiendo, ¿el DIV contiene algun otro texto o elementos adicional al que quieres buscar? si es asi, entonces tienes que usar la forma que estabas usando antes, solo que te faltaba poner innerHTML entre getElementById(...) e indexOf.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 26/10/2009, 04:27
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Respuesta: Formulario - Controlando envio con indexOf()

Nada... no consigo que funcione ! xD Lo dicho... negado a los mandoooooooos!

Cita:
if(window.document.getElementById('idcontenedordiv ').innerHTML.indexOf("CadenadeTexto a encontrar")!='-1'{
}else{
return (false);
}
He colocado bien el indexOf? O lo estoy complicando demasiado... Lo que quiero hacer es que dependiendo del contenido de texto del DIV no se valide el formulario.

O sea, si encuentra una equivalencia con una cadena de texto concreta, PARA. En caso contrario valida el formulario.

Gracias por vuestra paciencia :)
__________________
Consultor SEO / WPO
[EXP] Fuego de Vida ->sitio web
  #6 (permalink)  
Antiguo 26/10/2009, 04:41
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Formulario - Controlando envio con indexOf()

te falto cerrar el condicional if con el parentesis, es decir, antes de la llave { va un parentesis de cierre ). y para evitar posibles problema, -1 tiene que ser tipo numerico pero lo tienes en string, simplemente quitale las comillas simples.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 26/10/2009, 04:56
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Respuesta: Formulario - Controlando envio con indexOf()

Cita:
Iniciado por zerokilled Ver Mensaje
te falto cerrar el condicional if con el parentesis, es decir, antes de la llave { va un parentesis de cierre ). y para evitar posibles problema, -1 tiene que ser tipo numerico pero lo tienes en string, simplemente quitale las comillas simples.
Justo ahora había detectado ese problema y corregido el mismo... pero nada. Continua sin funcionar correctamente...

Cita:
if(window.document.getElementById('nombrediv').inn erHTML.indexOf("Texto a localizar")!=-1{

}else{
return (false);
}
Vamos, que más que no funcionar, valida directamente el formulario... No termino de comprender donde esta el problema. La verdad es que de lo simple que parece comienza a resultar excesivamente complicado xD jajajajjaa

Así que al final lo he solucionado a "la valiente":

Cita:
if(window.document.getElementById('nombrediv').inn erHTML="Texto a localizar"){
return (false);
}
Gracias por la ayuda hamijo!
__________________
Consultor SEO / WPO
[EXP] Fuego de Vida ->sitio web
  #8 (permalink)  
Antiguo 26/10/2009, 05:06
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Formulario - Controlando envio con indexOf()

muestra como invocas ese codigo. para cancelar el envio de formulario, tienes que usar el evento onsubmit dentro del elemento <FORM>. si el codigo esta directamente dentro del evento, supone que te funcione. por el contrario, si es una invocacion de una funcion que contiene el codigo, tienes que preceder dicha invocacion con la expresion return.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 26/10/2009, 05:56
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Respuesta: Formulario - Controlando envio con indexOf()

Cita:
Iniciado por zerokilled Ver Mensaje
muestra como invocas ese codigo. para cancelar el envio de formulario, tienes que usar el evento onsubmit dentro del elemento <FORM>. si el codigo esta directamente dentro del evento, supone que te funcione. por el contrario, si es una invocacion de una funcion que contiene el codigo, tienes que preceder dicha invocacion con la expresion return.
La parte de la validación del usuario esta controlada :) Funciona correctamente... pero tengo una duda...

No tendria que cambiar esto:

Cita:
if(window.document.getElementById('nombrediv').inn erHTML="Texto a localizar"){
return (false);
}
Por esto:

Cita:
if(window.document.getElementById('nombrediv').inn erHTML=="Texto a localizar"){
return (false);
}
Ahora al lanzar datos erroneos en el formulario, interrumpe correctamente el envio del mismo, perooooooooo no se como, al efectuar las correcciones pertinentes e intentar validarlo continua leyendo la parte de contenido del texto a verificar.

¿Puede que sea por emplear solo un = en vez de ==?

Saludos
__________________
Consultor SEO / WPO
[EXP] Fuego de Vida ->sitio web
  #10 (permalink)  
Antiguo 26/10/2009, 06:19
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Formulario - Controlando envio con indexOf()

Hola

Otra opción sería en vez de usar innerHTML.indexOf usar firstChild.nodeValue.indexOf, no creo que funcione, pero bueno ...

Por otro lado, ¿te has planteado, llegado a este punto, usar expresiones regulares?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 27/10/2009, 02:59
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Formulario - Controlando envio con indexOf()

no entendi bien tu ultima consulta, quizas mostrando todo el codigo o el codigo implicado puede que entienda mejor el asunto.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
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 02:53.