Foros del Web » Programando para Internet » Javascript »

Como concatenar variables ASP con JavaScript

Estas en el tema de Como concatenar variables ASP con JavaScript en el foro de Javascript en Foros del Web. Hooolas, Vereis tengo un gran problema!! No me sale lo que quiero hacer... El tema va de ENCUESTAS. Primero os pongo el código y luego ...
  #1 (permalink)  
Antiguo 19/05/2004, 03:11
 
Fecha de Ingreso: diciembre-2003
Mensajes: 27
Antigüedad: 20 años, 5 meses
Puntos: 0
Como concatenar variables ASP con JavaScript

Hooolas,

Vereis tengo un gran problema!! No me sale lo que quiero hacer... El tema va de ENCUESTAS. Primero os pongo el código y luego os cuento, ok??

@@@@@@@@
CÓDIGO DEL FORMULARIO
<form name="Encuesta<%=(Recordset1.Fields.Item("IdEncues ta").Value)%>" method="post" action="validar.asp">
'Nombre de la ENCUESTA
<%=(Recordset1.Fields.Item("Nombre").Value)%></strong><br>
'RESPUESTAS de la Encuesta
<% For I=1 to (Recordset1.Fields.Item("NumOpciones").Value) %>
<input name="Respuesta<%=(Recordset1.Fields.Item("IdEncue sta").Value)%>" type="radio" value="<%=I%>">&nbsp;&nbsp;<%=(Recordset1.Fields.I tem("Texto"&I).Value)%>
<% Next %>
<input name="Submit" type="button" class="boton" value="Votar" onClick="validar(<%=Recordset1.Fields.Item("IdEncu esta").Value%>);">
</form>

@@@@@@@@

El problema lo tengo en que el nombre del formulario y el nombre de las respuesas en cada uno de los formularios es diferente. Cambia el IdEncuesta. Es decir, el primer formulario tendrá nombre Encuesta1 y las respuestas tendrán el nombre Respuesta1, y así sucesivamente...

@@@@@@@@
CÓDIGO DEL JAVASCRIPT
Pues el código no lo tengo hecho, pero quiero que haga algo así...
//Actualmente yo hago la concatenación de la siguiente manera...
function validar(IdEncuesta)
{
If (document.Encuesta+IdEncuesta+.Respuesta+IdEncuest a+.checked)
{
SUBMIT FORMULARIO
}
else
{
ALERT SELECCIONA OPCIÓN
}
}
}

@@@@@@@@

Bueno pues eso es todo. Espero haberme explicado bien. Si no es así me lo decís y aclararé las cosas...

GRACIAS GRACIAS. Espero que me podais echar una mano !!

Un saludo

adios adios
  #2 (permalink)  
Antiguo 19/05/2004, 03:18
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
pero se trata de que antes de enviarse la encuesta revise que se haya seleccionado un radio button de esos ¿no?
  #3 (permalink)  
Antiguo 19/05/2004, 03:32
 
Fecha de Ingreso: diciembre-2003
Mensajes: 27
Antigüedad: 20 años, 5 meses
Puntos: 0
Eii hoola tunait,

Sí se trata de eso. Lo hace antes de enviar la encuesta, pq una vez se le da al botón Votar va a una página que inserta en la bbdd.

Venga GRACIAS

Saludos
  #4 (permalink)  
Antiguo 19/05/2004, 04:03
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
pues mira, yo lo haría así:


<script language="JavaScript" type="text/javascript">
function validar(donde){
ok = false
for(m=0;m<donde.elements.length;m++){
if (donde.elements[m].type == "radio" && donde.elements[m].checked == true){
ok = true
break
}
}
if(ok){
return true
}
else{
alert('debe seleccionar alguna opción')
return false
}
}

</script>

y luego tu form lo pondría así

<form name="Encuesta<%=(Recordset1.Fields.Item("IdEncues ta").Value)%>" method="post" action="validar.asp" onsubmit="return validar(this)">
'Nombre de la ENCUESTA
<%=(Recordset1.Fields.Item("Nombre").Value)%></strong><br>
'RESPUESTAS de la Encuesta
<% For I=1 to (Recordset1.Fields.Item("NumOpciones").Value) %>
<input name="Respuesta<%=(Recordset1.Fields.Item("IdEncue sta").Value)%>" type="radio" value="<%=I%>"> <%=(Recordset1.Fields.Item("Texto"&I).Value)%>
<% Next %>
<input name="Submit" type="submit" class="boton" value="Votar" />
</form>

Prueba a ver si tiene algún error, que no lo he probado (aunque debería funcionar )

  #5 (permalink)  
Antiguo 19/05/2004, 04:11
 
Fecha de Ingreso: diciembre-2003
Mensajes: 27
Antigüedad: 20 años, 5 meses
Puntos: 0
HOOOLAAA tunait,

Cuanto he visto tu respuesta me he quedao así . Lo siguiente que he pensado ha sido esto y luego después de leerme tu respuesta, esto otro

Qué más puedo decir... GRACIAS GRACIAS GRACIAS. Aún no lo he probado. Ahora mismo voy a hacerlo u luego te comento, ok?

Saludos

adios adios
  #6 (permalink)  
Antiguo 19/05/2004, 04:29
 
Fecha de Ingreso: diciembre-2003
Mensajes: 27
Antigüedad: 20 años, 5 meses
Puntos: 0
Hola tunait,

Soy yo otra vez!!! funciona!!!! GRACIAS GRACIAS GRACIAS.

Bueno, la cuestión es que quiero ir más allá. La verdad es que me gustaría entender lo que has hecho...

Si te pido como último favor que me expliques un poco por encima que has hecho, lo harías?? Si puedes, pues no pasa nada. Esto del elements no acabo de entenderlo...

Me sabe a poco decirte solo GRACIAS. Si puedo hacer algo...

Saludos

adios adios
  #7 (permalink)  
Antiguo 19/05/2004, 04:46
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
claro, ahí te lo explicoteo

El problema principal que se te planteaba era que desconocías el nombre exacto que iba a tener el formulario y cada uno de los radios.

Como la condición para enviar el formulario es que haya al menos un radio seleccionado, y nada más, en vez de referenciarlos por su nombre lo hice desde el array de elementos que contiene el form que se crea automáticamente en el navegador.

Primero cambié el botón para que fuera un submit, en vez de un button y la llamada a la validación la metí en el evento onsubmit del formulario pidiéndole que le trajera de vuelta un valor de retorno true o false. Si es true, lo envía. Si es false, no lo envía y se queda quieto.

<form name="Encuesta<%=(Recordset1.Fields.Item("IdEncues ta").Value)%>" method="post" action="validar.asp" onsubmit="return validar(this)">

Le paso como parámetro a la función el objeto form mediante la sentencia this que sería lo mismo que decirle document.nombredeformulario. Pero como no sabemos su nombre, pues le decimos "yo mismo" osea, el formulario (independientemente de cómo se llame).

Así salta a la función javascript recogiendo el formulario en donde

function validar(donde){

creamos una variable que guardará true o false dependiendo de si se ha seleccionado algún radio. Inicialmente está en false

ok = false



arrancamos un bucle que dé tántas vueltas como elementos tenga el formulario

for(m=0;m<donde.elements.length;m++){


... y en cada vuelta del bucle accedemos a cada elemento mediante su posición. Usamos m para comenzar desde el elemento 0 incrementándola en cada vuelta para que en cada una verifique el elemento siguiente del formulario.

Comprobamos cada elemento que sea de tipo radio y si está checkado

if (donde.elements[m].type == "radio" && donde.elements[m].checked == true){


Si ambas condiciones se cumplen yá está bien y se puede detener la comprobación del resto de elementos y cambiamos el valor de la variable ok a true

ok = true
break



Si ninguna de las dos condiciones se ha cumplido durante ninguna de las vueltas del bucle, la variable ok seguirá en false.

Así finalmente comprueba la variable ok.

if(ok){
return true
}

si ok devuelve true, devolverá true al formulario y éste se enviará


else{
alert('debe seleccionar alguna opción')
return false
}

si no, devolverá false al formulario y además dará una alerta advirtiéndo que no sea vago/a y haga click en alguna de las opciones.


Y yá

¿Logré explicotearme??
  #8 (permalink)  
Antiguo 19/05/2004, 04:54
 
Fecha de Ingreso: diciembre-2003
Mensajes: 27
Antigüedad: 20 años, 5 meses
Puntos: 0
Hooolas !!

Vuelvo a quedarme impresionado . Cuanta sabiduría por dios!!! Bueno pues solo comentar que ya me gustaría saber la mitad de lo que sabes !!!

Vuelvo a darte las GRACIAS y ALABARTE como te mereces

Saludos y GRACIAS por todo lo que has hecho hoy por mi.

adios adios


P.D.:
  #9 (permalink)  
Antiguo 19/05/2004, 05:11
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Huy, y no veas la vanidad lo que se me ha hinchado


Pues gracias por tus alabanzas, estas inyecciones de aplausos sientan de bien.....

Me alegra el haber podido ayudarte

Un saludote y 'ta otra
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 23:39.