Personalizar una encuesta nueva

El problema que tengo es que el código fuente está en un servidor que no pudo ver desde mi pc, etc, etc… por eso intento hacerlo armándola yo misma… de todas maneras… me faltaba los con el número de elemento. Hoy mismo lo pruebo…y te comento…
Muchas Gracias!! Saludos!
Nerina

No me refiero a las fuentes del proyecto, sino al codigo html que forma la página cuando la navegás. Si podes navegar la encuesta como si fueras un encuestado que la va a completar (que asumo que podes, ya que de esa manera debes estar controlando si funciona o no tu javascript) entonces podes ver el código que la genera. Esto se puede ver normalmente haciendo click con el botón derecho sobre la página, aparece la opción “ver código fuente de la página”.
Si trabajas en firefox (o chrome también) te recomiendo una aplicación llamada Firebug, es muy útil para desarrolladores, sobre todo para trabajar con javascript.

ah… interpreté mal…
Ahora estoy viendo el código completo… y puedo ver bien los ID…voy a instalar el firebug de todas formas… gracias!

Hola… estuve probando lo que me decis…
Acá te paso la partecita donde se identifican los ID

Si No

y como no parace tener la forma de array me generó dudas… de todas formas hice lo siguiente como para probar:

var tuvo_dificultad = document.getElementById(‘c3_208_5_1005’);
var cual_dificultad = document.getElementById(‘c3_208_6_1006’);

function acciones_tuvo_dificultad()
{
if (tuvo_dificultad.checked == true) {
cual_dificultad.value = “decime cual!!!”;
cual_dificultad.style.display = ‘inline’
cual_dificultad.disabled = false;
} else {
cual_dificultad.value = “que bueno =))”;
cual_dificultad.disabled = true;
}
}

if ((tuvo_dificultad!=null) ) acciones_tuvo_dificultad();

tuvo_dificultad.onchange = function()
{
acciones_tuvo_dificultad();
}

El tema es que si le agrgo el dígito como me decis no funciona porque no lo reconocería supongo…
Y esto funciona siempre y cuando grabe la encuenta…
Qué me está faltando??
Gracias

El ejemplo que te di era de un checkbox, el código que me estas mostrando parece ser de un radio button (o grupo de radio buttons?). Como verás también se etiquetan distinto y tienen otras propiedades. En este caso el id de todas las opciones es el mismo (y tambien la propiedad name).
Dependiendo de lo que querés lograr tenes que ver cómo te conviene accederlo.

Hola Clara, como te decía es un botón…
Mi consulta era: Cómo hacer para que cuando se seleccione un botón de opción, se vea y permita escribir en un casillero de texto. Y si se selecciona otro botón al casillero no esté visible.
El tema es que no puedo tratarlo como array de opciones porque tienen el mismo nombre y ningún índice… entonces probé con la propiedad value y tampoco funcionaba, etc, etc… estuve viendo sentencias de Java Script por internet pero no puedo resolverlo… algo estoy haciendo mal y no me estoy dando cuenta…
Necesitaría resolverlo, desde ya muchas gracias
Saludos

En ese caso, como todos tienen el mismo nombre, podes usar “getElementsByName()” para obtener un arreglo con todos los elementos que tienen ese nombre. Luego podes recorrer ese arreglo hasta encontrar el que tiene el valor que vos buscas y según el estado (chequeado o no) determinas la acción a realizar.

Clara: probé con getElementesByName y no funciona…
De todas maneras puse carteles de alerta para ver valores, nombre, si está checked, y lo curioso es que solo considera el primer botón.
Arranco de cero para que se entienda…
Tengo dos preguntas:
Una de ellas con tipo de respuesta radio Button con dos opciones Si y No
Y otra de ellas solo con una caja de texto…
El código está escribo mas arriba…
Como te decía funciona raro…
Si hago click en la primera opción hace lo que quiero que haga… funciona perfecto…
Si en ese mismo momento hago click en la segunda opción no hace nada, no actualiza nunca el valor de la opción (esto lo vi con los mensajes de alertas)… sin embargo si posteriormente hago click en guardar, si hace lo que quiero que haga, pero no almacena el nuevo texto en la DB…
Por favor, me podrías pasar un ejemplo? o ver qué estoy haciendo mal?
Necesito entregar esta encuesta cuanto antes y me piden controles… muchas gracias!
Saludos
Nerina

Te copio acá un ejemplo de cómo hacer lo que me parece entender que queres hacer.


//ESTE ES EL ARREGLO DE ELEMENTOS DEL RADIO BUTTON QUE SE IDENTIFICAN CON EL ESE NOMBRE
var radio_button_respuestas = document.getElementsByName('c2_1_1_71');

//ESTOS SON: LA PREGUNTA Y EL AREA DE TEXTO DEL RENGLON QUE QUIERO AFECTAR DE ACUERDO AL RADIO BUTTON QUE SE HAYA SELECCIONADO
var pregunta_texto = document.getElementById('d2_1_2_53');
var respuesta_texto = document.getElementById('c2_1_2_53');
	
//ESTOS SON TODOS LOS VALORES DE LAS RESPUESTAS DEL RADIO BUTTON 
var si = 9;
var no = 10;
	
function acciones_radio_button() {
        //ESTE FOR RECORRE TODO EL ARREGLO MIRANDO CUAL ESTÁ CHEQUEADO
	for (i=1; i<radio_button_respuestas.length;i++) {
            //SI YA SABES EN QUÉ POSICIÓN ESTÁ CADA VALOR BUSCADO PODES EVITAR EL FOR
            //CONSULTANDO SOLAMENTE LAS POSICIONES DEL ARREGLO QUE CORRESPONDAN (los valores puntuales de i que te interesan)
		if (radio_button_respuestas[i].checked) {
			if (radio_button_respuestas[i].value == si) {
				respuesta_texto.value = '';
				pregunta_texto.style.display = 'none';
				respuesta_texto.style.display = 'none';
			} 
			if (radio_button_respuestas[i].value == no) {
				pregunta_texto.style.display = '';
				respuesta_texto.style.display = '';
			}
		}
	}
}

Es decir, que se obtienen todos los elementos del radio button en un arreglo, y se controlan por la posición en el arreglo y/o por el valor asociado (value) preguntando si está chequeado o no y se actúa según el caso.
No se qué efecto querés lograr vos con el campo de texto, en el ejemplo que te muestro, yo oculté/mostré el cuadro. Si en lugar de eso lo deshabilitas, el efecto que vas a ver es un grisado pero los valores que tenga no se van a grabar en la base. Si ocultas Y deshabilitas, dejas de verlo y tampoco se graban en la base.

Clara, lo que necesitaba es exactamente lo que me pasaste… de todas maneras hace lo mismo…nuevamente funciona, de esta manera también, pero es como que no actualiza la página, sólo si hago click en guardar, entonces deshabilita…
Use tu código por las dudas con los ID correspondientes… y lo terminé así… está bien?

if (radio_button_respuestas!=null) acciones_radio_button();

radio_button_respuestas.onclick = function()
{
acciones_radio_button();
}

Si, eso debería funcionar. Fijate que no te haya quedado más código javascript que esté generando conflictos.
El código que te pasé lo armé sobre una encuesta y funciona sin necesidad de guardar las respuestas, pero no deshabilita el renglon sino que lo oculta.

Borré todo por las dudas y pasa lo mismo… ocurre que la encuesta que quiero publicar es muy pequeña y para un grupo de anónimos, y solo aparece el boton terminar, no ocurre lo mismo con el usuario adminisrtador que parece el botón guardar también. El radio button (de dos botones) aparece inicialmente sin seleccion, cuando hago click en una opción no hace nada. Es como que no recarga la página (no la actualiza). Vos la probaste en una encuesta y funciona es así?? no entiendo qué estoy haciendo mal… y la opcion de radio button es la mejor en este caso teniendo en cuenta experiencias pasadas en las respuestas…
En el caso de el usuario administrador si hago click en guardar si actualiza pero no es el funcionamiento correcto…
se te ocurre alguna cosa?
Muchas gracias!
Saludos

Hola Nerina, antes que nada disculpá la demora en responder. El problema lo tenés en la definición del onclick, yo no me di cuenta antes cuando vi el código que me mostraste. Normalmente esa sería la forma de definirlo, pero fijate que en este caso estas trabajando sobre radio buttons y los elementos html para los radio buttons se definen distinto (parecido a lo que ocurre con los checkbox).
En el caso de las respuestas definidas con un conjunto de radio buttons el evento onclick lo tenes que definir para el grupo de radio buttons y no para uno de ellos. Y fijate que el id para el grupo es distinto: “fsc<id_encuesta><id_bloque><nro_pregunta>_<id_pregunta>”

Para el ejemplo que te había dado anteriormente deberías definir una variable más:


var grupo_radio_button_respuestas = document.getElementsById('fsc2_1_1_71');

y luego el evento y el control inicial de la siguiente manera:


grupo_radio_button_respuestas.onclick = function()
{
   acciones_radio_button();
}
if (radio_button_respuestas!=null) acciones_radio_button();

Hola Clara! no hay problema, la encuesta se lanzo de todos modos, y como tengo otras que preparar, me gustaría poder solucionarlo, ya es una intriga para mi saber qué está pasando… discupá que vuelva a preguntarte, pero no doy en la tecla para que funcione.
Te comento que agregando esa variable y modificando el onclik no funciona ni automáticamente ni dandole guardar…m hice muchas pruebas de todo tipo y nada… iniciando nuevamente con la pregunta de cero el archivo tiene extensión .js esto está bien no es así? directorio …/kolla/aplicacion/www/js/encuestas/
Haciendo resumido el formulario me concentro en dos preguntas, en donde el tipo de respuesta es: una de ellas de tipo radio con dos opciones y la otra solo caja de texto. La idea es que al hacer click en una de las opciones del radio automáticamente se deshabilite la otra pregunta con su respuesta de tipo texto.
Desde ya gracias por ayudarme. Saludos!

El código quedó entonces de esta manera, los ID están revisados una vez mas:

//ESTE ES EL ARREGLO DE ELEMENTOS DEL RADIO BUTTON QUE SE IDENTIFICAN CON EL ESE NOMBRE
var radio_button_respuestas = document.getElementsByName(‘c3_208_5_1005’);

//ESTA ES LA LINEA NUEVA QUE ME INDICASTE
var grupo_radio_button_respuestas = document.getElementsById(‘fsc3_208_5_1005’);

//ESTOS SON: LA PREGUNTA Y EL AREA DE TEXTO DEL RENGLON QUE QUIERO AFECTAR DE ACUERDO AL RADIO BUTTON QUE SE HAYA SELECCIONADO
var pregunta_texto = document.getElementById(‘d3_208_6_1006’);
var respuesta_texto = document.getElementById(‘c3_208_6_1006’);

//ESTOS SON TODOS LOS VALORES DE LAS RESPUESTAS DEL RADIO BUTTON
var si = 53;
var no = 54;

function acciones_radio_button() {
for (i=0; i<radio_button_respuestas.length; i++) {
if (radio_button_respuestas[i].checked) {
if (radio_button_respuestas[i].value == si) {
respuesta_texto.value = ‘’;
pregunta_texto.style.display = ‘inline’;
respuesta_texto.style.display = ‘inline’;
}
if (radio_button_respuestas[i].value == no) {
pregunta_texto.style.display = ‘none’;
respuesta_texto.style.display = ‘none’;
}
}
}
}

grupo_radio_button_respuestas.onchange = function()
{
acciones_radio_button();
}
if (radio_button_respuestas!=null) acciones_radio_button();

Nerina, por las dudas no has probado acceder usando el google chrome e inspeccionando el codigo? A mi sirvio con ese explorador y me indico especificamente donde estaba incorrecto el script.

Fijate, ingresa a la encuesta, haciendo click derecho “inspeccionar elemento” para qeu puiedas ver el script .js y ver si se salta algun error.

Saludos

No lo he probado pero y mismo lo hago, y comento, gracias!!

Ahora si veo el error, el método del grupo no debe ser del Id sino del Name, de todos modos no refresca la pantalla, vos pudiste hacerlo en una encuesta tuya? gracias por ayudarme, saludos

hOLA Nerina, yo tenia error tb pero nada q ver con lo tuyo. Lo mio era un error en la llamada a la función.

Y con respecto al “refrescar” ctrol f5 varias veces. Eso me ha pasado, q no me tomaba el script actualizado (con firefox), por eso despues probe en google crome y ahi si aparecia actualizado

Hola Nerina,
el código que me pasaste tiene algunos errores de sintaxis y otros de uso de los elementos.


var grupo_radio_button_respuestas = document.getElementsById('fsc3_208_5_1005');

En ese caso el error es la “s” en “Elements”, este método es getElementById porque recupera un solo elemento. En el caso de getElementsByName se recupera un arreglo de elementos, todos aquellos que tengan el mismo tag Name.


function acciones_radio_button() {       
   for (i=0; i<radio_button_respuestas.length; i++) {           
      if (radio_button_respuestas.checked) {         
         if (radio_button_respuestas.value == si) {
            respuesta_texto.value = '';
            pregunta_texto.style.display = 'inline';
            respuesta_texto.style.display = 'inline';            
         }
         if (radio_button_respuestas.value == no) {
            pregunta_texto.style.display = 'none';   
            respuesta_texto.style.display = 'none';
         }      
      }   
   }
}

El error en esta sección de código es la forma de consultar los valores. El elemento radio_button_respuestas es el arreglo de todas las respuestas del radio button, por lo tanto deberías accederlo asi:
radio_button_respuestas[i].checked
radio_button_respuestas[i].value


if (radio_button_respuestas!=null) acciones_radio_button();

Ese control está mal, también tiene que ser sobre grupo_radio_button_respuestas.

Fijate corrigiendo esas cosas que debería funcionar bien.

Clara, discupá la demora en la respuesta, recién hoy pude ver estos temas.
Te cuento que lo probé y anda perfectamente.
Gracias!
Saludos
Nerina