Personalizar una encuesta nueva

Hola!
Estoy utilizando el Kolla para lanzar una encuesta especial y necesito que esté personalizada. Mis dos dudas son las siguientes:

  1. Cómo hacer para que al seleccionar una respuesta determinada de un combo, se deshabiliten responder otras preguntas almacenando en la Base de Datos algo determinado.
  2. 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.

Muchas Gracias
Saludos cordiales, Nerina
UNR - Dirección de Estadística Universitaria

Nerina, algo parecido consulte yo. Fijate en el tópico MUG LOCALIDADES la ultima respuesta.

Saludos

Perdón por la demora en responder.
En el ejemplo que te había mandado por mail había este tipo de personalizaciones. En todos los casos lo primero que tenés que hacer es identificar el id del elemento de respuesta que querés controlar y del que queres modificar. Explico un poco sobre cada una de las preguntas:

  1. En este caso tenes que controlar el valor del elemento durante la carga de la encuesta, y cada vez que su valor cambie:
... if (pregunta_combo.value==nolee) ...

y luego habilitar/deshabilitar los otros elementos según desees:

... otra_pregunta.disabled = true; ...

si querés asegurarte que en ese elemento se carga un valor determinado -por ejemplo si era un cuadro de texto querés que vaya vacío-:

... otra_pregunta.value = 0; ...
  1. De manera similar al caso anterior, cuando la respuesta es de tipo checkbox, lo que chequeas es su propiedad “checked”:
... if (boton_opcion.checked == true) ...

para hacer visible o no visible parte de la encuesta, tenes que ocultar el elemento de la pregunta y el elemento de la respuesta:

... preguntaX.style.display = ''; ...
... respuestaX.style.display = ''; ...

Las propiedades, atributos, funciones, … a utilizar pueden variar según el tipo de elemento html que se está utilizando. Para esto una excelente fuente de información es el sitio: http://www.w3schools.com/js/default.asp

Muchas gracias… este finde lo pruebo y comento.
Saludos!
Nerina

Clara, tengo una duda mas, recién hoy lo pude probar… pero me encontré con que si pongo: .checked == true como condición, evalua si está seleccionado o no, pero no pudo identificar qué valor tiene marcado…
Quizas esté haciendo algo mal con los identificadores, me podes aclarar un poco estos punto, muchas gracias!!
Saludos
Nerina

Hola Nerina,
cada una de las opciones que se dan en una pregunta de múltiples checkbox tiene un id distinto asociado. Tendrías que usar el id de la opción que queres controlar, la que está asociada al valor que buscas.
Saludos.

Hola Clara, lo que me parece que estoy haciendo mal es la forma en que obtengo el ID…
Cómo obtengo el ID de cada elemento?
Muchas gracias!! saludos
Nerina

Como regla general, el id de cada elemento de la encuesta tiene la siguiente forma:
c<id_encuesta><id_bloque><nro_pregunta>_<id_pregunta>
pero en las preguntas cuya respuesta está compuesta por múltiples elementos esto puede cambiar, por ejemplo en las preguntas con multiples checkbox el id de la pregunta termina con “” y a los ids de cada una de las opciones se les agrega un digito más, consecutivo y contando desde 0.
Lo mejor para estar completamente seguro del id que necesitas es mirar el código fuente de la página generada por la encuesta y buscar el elemento que queres identificar.

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