Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Matriz campo de texto y desplegables por filas excluyentes.

More
3 years 4 weeks ago #230823 by frnchu
Claro, pero ¿cuál sería la ecuación relevante? Entiendo que debe ser algo así como (en pseudocódigo) 
Si pareja no es igual a 0 y rollete no es igual a 0 y poliamorosa no es igual a 0 y abierta no es igual a 0. 
Pero no logro afinar con la sintaxis correcta.

Por otro lado, sigo con el problema 1), el campo Otros no se muestra en la pregunta matriz, se muestra en una siguiente pregunta como texto corto. 

Gracias.

Please Log in to join the conversation.

More
3 years 4 weeks ago #230832 by Joffm
Lee el manual por las funnctionas implementadas.
[url] www.limesurvey.org/manual/ExpressionScri...mplemented_functions [/url]

Puedes usar por ejemplo "countif("a",x,y,z,...)"
La condición para ver el texto corto es:
"el numero de las repuestas "0" de la matriz es >0":  countif("0",that.CodigoMatriz)>0
o
"el numero de las repuestas ">0" de la matriz es <4":  countifop(">","0",that.CodigoMatriz)<4
o
con codigos numericos de la matriz
sum(that.CodigoMatriz)>0

2. Que tiene que estar VERDAD para ver el texto corto?
subpregunta no vasia y subpregunta > 0

Manda la ultima lss.

Joffm 


 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: frnchu

Please Log in to join the conversation.

More
3 years 4 weeks ago - 3 years 4 weeks ago #230917 by frnchu
Buenas de nuevo, ya estoy aquí (perdón por el retraso pero hay mucho trabajo acumulado). Creo que no nos hemos entendido bien la última vez, así que intento explicarlo de forma más clara ahora.

P1) Q001 Pregunta obligatoria por medio de ecuación de validación de pregunta, porque necesito que se rellenen todas las subpreguntas excepto la última "Otros", que es opcional. He añadido esta sintaxis como me decías:
Code:
(is_empty(self.sq_Y007) and count(self)==6) or (!is_empty(self.sq_Y007) and count(self)==7)

En la subpregunta "Otros" no aparece el campo de texto añadido mediante javascript. No aparece dentro de la celda "Otros" cuando la opción de visualización es "pregunta por pregunta", sino como una pregunta siguiente Q002 (mirar LSS). Sí se visualiza bien en "por secciones" o "todos en uno". 
[img

[img


P2) Para la pregunta Q003, necesito que si las 4 subpreguntas son = 0, todas, saltar a Q005 mediante ecuación relevante. 
¿Tengo que poner en Q004 una sintaxis así? Si quiero saltarme, por ejemplo 10 preguntas, tendré que poner esa misma ecuación en cada una de ellas, ¿cierto?
Code:
countif("0", Q003_Y001_X001, Q003_Y002_X001, Q003_Y003_X001, Q003_Y004_X001) == 4


Creo que eso es todo. Espero haberme explicado mejor ahora. Mil gracias de nuevo Joffm. 

File Attachment:

File Name: encuesta.lss
File Size:64.96 KB




 
Last edit: 3 years 4 weeks ago by frnchu.

Please Log in to join the conversation.

More
3 years 3 weeks ago #230946 by Joffm
Hola,

No aparece dentro de la celda "Otros" cuando la opción de visualización es "pregunta por pregunta", sino como una pregunta siguiente Q002 (mirar LSS). Sí se visualiza bien en "por secciones" o "todos en uno". 

Por supuesto. Son dos preguntas.
javascript trabaja en la computadora del respondente. No puede mover una pregunta que no está en la misma pagina (y en la pantalla)

countif("0", Q003_Y001_X001, Q003_Y002_X001, Q003_Y003_X001, Q003_Y004_X001) == 4

countif("0",that.Q003)==4 es suficiente.

Pero en tu pregunta Q0003 no hay un codigo "0".
Es porque no ingresaste nada aquí.
 
Ahora se utilizan los valores predeterminados.
Por favor, ingresa tus valores.

 
  


Pero, para hablar la verdad, a mi no me gusta esta forma de mostrar la pregunta.
Un campo muy, muy largo para un solo numero.
Ejemplo:
 
Varias textos cortos
Code:
<script type="text/javascript" charset="utf-8">
    $(document).on('ready pjax:complete',function()    {
        var qID = {QID};        
        var inputNum = 0;
 
        // Define the select element (dropdown)
        var prov1 = '<select id="prov1" class="form-control">\
                        <option value="">...</option>\
                        <option value="0">0</option>\
                        <option value="1">1</option>\
                        <option value="2">2</option>\
                        <option value="3">3</option>\
                        <option value="4">4</option>\
                        <option value="5">5</option>\
                        <option value="6">6</option>\
                        <option value="7">7</option>\
                        <option value="8">8</option>\
                        <option value="9">9</option>\
                        <option value="10">10 y mas</option>\
                    </select>';
         // Hide the text input
        $('#question'+qID+' .question-item:eq('+(inputNum)+') input[type="text"]').hide();
        $('#question'+qID+' .question-item:eq('+(inputNum+1)+') input[type="text"]').hide();
        $('#question'+qID+' .question-item:eq('+(inputNum+2)+') input[type="text"]').hide();
        $('#question'+qID+' .question-item:eq('+(inputNum+3)+') input[type="text"]').hide();
 
        // Insert the select elements
        if($('#question'+qID+' .question-item:eq('+(inputNum)+') select').length == 0) {
            $('#question'+qID+' .question-item:eq('+(inputNum)+') input[type="text"]').before(prov1);
        }        
        if($('#question'+qID+' .question-item:eq('+(inputNum+1)+') select').length == 0) {
            $('#question'+qID+' .question-item:eq('+(inputNum+1)+') input[type="text"]').before(prov1);
        }        
        if($('#question'+qID+' .question-item:eq('+(inputNum+2)+') select').length == 0) {
            $('#question'+qID+' .question-item:eq('+(inputNum+2)+') input[type="text"]').before(prov1);
        }        
        if($('#question'+qID+' .question-item:eq('+(inputNum+3)+') select').length == 0) {
            $('#question'+qID+' .question-item:eq('+(inputNum+3)+') input[type="text"]').before(prov1);
        }        
         
        // Initially select an option if the question has already been answered
        $('#question'+qID+' select').each(function(i) {
            if($.trim($(this).next('input[type="text"]').val()) != '') {
                $(this).val($.trim($(this).next('input[type="text"]').val()));
            }
        });
 
        // Listener on the dropdowns - insert selected values into hidden text input
        $('#question'+qID+' select').change(function() {
            var thisInput = $(this).next('input[type="text"]');
            $(thisInput).val($(this).val());
            checkconditions($(thisInput).attr('value'), $(thisInput).attr('name'), 'text');
        });
 
        // Some styles
        $('#question'+qID+' select').css({
        'margin':'0.3em 0 0 0'
        });
    });
</script>

Pero todavia los respondentes tienen que clic con el mouse dos veces para cada valor. Porque?
Porque no pueden entrar un numero?

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: frnchu

Please Log in to join the conversation.

More
3 years 3 weeks ago #231006 by frnchu
Okey Joffm. Todas tus indicaciones y recomendaciones introducidas. Ya funciona todo como debería. De nuevo, mil gracias y puede darse por resuelta la consulta.
Saludos.

Please Log in to join the conversation.

Moderators: holchtpartner

Lime-years ahead

Online-surveys for every purse and purpose