Sobre definicion de comportamiento de preguntas y respuestas

Hola

me pueden ayudar a entender que estoy haciendo mal ??

para dar comportamiento a una pregunta respecto de la respuesta anterior hago lo siguiente
donde 10014 es el codigo de la pregunta.
319 es el codigo de la pregunta que debe activarse o desactivarse en funcion del valor de la respuesta anterior.
169 es el valor de la respuesta que corresponde a otro. Si se selecciona esta opcion se debe habilitar la pregunta cuyo codigo es 319 pero si se marca otra opcion se debe deshabilitar esta pregunta.

///asi lo defini///
var obstaculo = 10014;
var otros_obst = 319;

get_preguntas(obstaculo).on(‘change’, function(){
var otras = 169;
if (this.value==otras) {//habilitar pregunta “otras razones”
habilitar_elemento(this, otros_obst);
} else {//deshabilitar pregunta “otras razones”
deshabilitar_elemento(this, otros_obst);
}
return false;
}).change();

No se que esta mal. Cree un archivo con el nombre cod-encuesta.js en /mnt/datos/kolla/aplicacion/www/js/encuestas

no se java quizas solo eso sea mi problema o debo habililitar alguna otra cosa para que la configuracion definida en un archivo sea tenida en cuenta para el comportamiento de la encuesta??

que otras consideraciones debo tener ??? el tipo de respuesta de pregunta cuyo resultado define un comportamiento u otro debe ser excluyente ??

Gracias

Buen día Alicia.

El error esta en el valor que le das a las preguntas.

Para el caso de las respuestas esta bien usado sge_respuesta.respuesta, pero para las preguntas debe ser el campo clave sge_encuesta_definicion.encuesta_definicion correspondiente.

Después el resto esta perfecto.

Saludos!
Germán

German

hice SELECT * FROM sge_encuesta_definicion Where encuesta = cod_encuesta

y tome las claves de las definiciones de las preguntas correspondientes. Esto es asi verdad ?? esos códigos debo utilizar ??

ahora bien, con solo cambiar eso es suficiente ?? ya solo entiende que si existe el archivo con el cod_encuesta en esa ruta lo toma ??

gracias

Alicia

Buenas tardes Alicia.

Exacto. Con eso debería levantar el javascript. Tené en cuenta también que el nombre del archivo debe coincidir con el campo sge_encuesta_atributo.encuesta que, por lo que mencionas asumo que es cod_encuesta (y cod_encuesta.js el archivo), y de ser así esta perfectamente implementado.

Saludos!
Germán

Perfecto, funciono correctamente.

Ahora bien, necesito relacionar tres preguntas y no me sale, si la respuesta de la primera es diferente a la primer opcion debe deshabilitar las dos preguntas siguientes. En caso contrario, debe habilitar la pregunta dos que admite multiples opciones. Si, una de las opciones es otros, debe habilitar la pregunta siguiente. para que complete con texto libre otros motivos…

adjunto imagen con las preguntas a modo de ejemplo.

saludos y mil gracias


prueba encuesta.png

prueba encuesta.png

Buenas tardes Alicia.

La manera de relacionar 3 preguntas es mediante 2 funciones javascript de la misma manera que lo hiciste anteriormente para relacionar 2. Esto sería una aproximación a lo que necesitas:


get_preguntas(cantidad_tiempo).on('change', function() {
	var index_tiempo_seleccionado = this.selectedIndex;
	if (index_tiempo_seleccionado != 1) { //Distinto de 1 en caso de que se tenga la opción vacía en la primera colocación
		//Deshabilita segunda y tercera pregunta
		deshabilitar_elemento(this, aspectos_que_demoran);
		deshabilitar_elemento(this, aspectos_que_demoran_otro);
	} else {
		//Habilita segunda pregunta
		habilitar_elemento(this, aspectos_que_demoran);
	}
}).change();

get_preguntas(aspectos_que_demoran).on('change', function() {
	if (condicion) { //Donde condicion es la comparación con el valor correspondiente a 'Otros'
		//Habilita tercera pregunta
		habilitar_elemento(this, aspectos_que_demoran_otro);
	} else {
		//Deshabilita tercera pregunta
		deshabilitar_elemento(this, aspectos_que_demoran_otro);
	}
}).change();

Donde cantidad_tiempo, aspectos_que_demoran y aspectos_que_demoran_otro son variables correspondientes a las preguntas y que tienen que estar definidas previamente de acuerdo a sus respectivas claves.

En relación a la primera comparación quizá sea mejor conocer la clave de este primer valor y comparar contra este. Si te vas a asegurar que siempre va a aparecer primero entonces no hay problema.

Saludos!
Germán