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 ??
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.
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.
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.
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.