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.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 7 months ago #230778 by Joffm
Hola,
1. Considere siempre: lo que debe ser verdad.
SQ010 está vacío y cuenta = 9 O SQ010 no está vacío y cuenta = 10.
Asi que
(is_empty(self.sq_SQ010) and count(self)==9) or (!is_empty(self.sq_SQ010) and count(self)==10) 
Por supuesto, la pregunta no debe ser obligatoria.
Esto se aplica mediante la validación.

Sin embargo, creo que esta pregunta sobre los "otros" no tiene sentido.

a. ¿De qué sirve si UNA persona responde "Siempre lleva una camisa amarilla" con una puntuación de 5 y OTRA "Siempre limpia sus zapatos" con una puntuación de 7?
No tiene valor estadístico.

b. Las personas no ingresarán nada con un valor bajo.
Siempre habrá cosas que son importantes.
Por lo tanto, no puede comparar estos valores medios con los otros (predefinidos).

Por estas razones, es más apropiado hacer una pregunta de texto abierta: "¿Hay otros aspectos que son importantes para usted?"


2. ¿Por qué siempre esta preselección innecesaria con Sí/No?
Una matriz(numeros)  de 0-10 es suficiente.
 
O, para que sea más fácil para el encuestado, una matriz
 
O, multiple textos cortos con menú desplegable
 

Pero si insistes en tu solución:
Debe establecer un valor si el campo está "disabled".
Code:
    function handleColumnX002(thisSelect) {
      var thisRow = $(thisSelect).closest('tr.subquestion-list');
      var item2 = $('.answer_cell_X002', thisRow);
      if($(thisSelect).val() == '1') {
        $('.inserted-select', item2).prop('disabled', false);
      }
      else {
        $('.inserted-select', item2).val('0').prop('disabled', true);
        $('input:text', item2).val('0').trigger('change');
      }
    }

Para el análisis, debe recodificar los campos que están vacíos a "0".
Esta es la única forma en que puede calcular un valor medio significativo.
Esta es otra razón por la idea de "Sí/No" no es la mejor.
En mi opinión, hay muchas mejores soluciones.
 

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.

  • frnchu
  • frnchu's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 7 months ago #230780 by frnchu
1) Entendido, uso esa expresión para validar la pregunta. Sin embargo, el cuadro de texto no se me muestra en la última opción, sino como una pregunta siguiente. ¿A qué se debe esto? En el LSS anterior se puede ver. 


2) Totalmente cierto, esa opción de pregunta, matriz numérica, me gusta mucho más. Más sencillo, más práctico.
Ahora, ¿cómo puedo saltar a una pregunta X si todas las opciones de respuesta son 0? Si no ha tenido ningún tipo de relación (de las 4 posibles relaciones que hay, indicando 0 en todas) que se salte a la pregunta, por ejemplo, número 20, no consecutiva. 

Gracias, otra vez.

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 7 months ago #230785 by holch
No existen "saltos" en Limesurvey. Tienes que "esconder" (via "relevance equation") cada pregunta entre la actual y la pregunta a donde quieres "saltar".

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

Please Log in to join the conversation.

  • frnchu
  • frnchu's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 7 months 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.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 7 months ago #230832 by Joffm
Lee el manual por las funnctionas implementadas.
[url] manual.limesurvey.org/ExpressionScript_-...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.

  • frnchu
  • frnchu's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 7 months ago - 1 year 7 months 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:65 KB




 
Last edit: 1 year 7 months ago by frnchu.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 7 months 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.

  • frnchu
  • frnchu's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 7 months 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.

Lime-years ahead

Online-surveys for every purse and purpose