- Posts: 7
- Thank you received: 0
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Slider Question in reverse order
- hellosachin77
- Topic Author
- Offline
- New Member
Less
More
9 years 8 months ago #111692
by hellosachin77
Slider Question in reverse order was created by hellosachin77
Hi,
I have a question "Multiple numerical input" which I am using as Slider. Currently the slider is displayed as 0 - 5. What I want to do is to display the slider from 5 - 0. Can you please suggest how can I do this.
Prompt response would be greatly appreciated.
Thanks in advance.
I have a question "Multiple numerical input" which I am using as Slider. Currently the slider is displayed as 0 - 5. What I want to do is to display the slider from 5 - 0. Can you please suggest how can I do this.
Prompt response would be greatly appreciated.
Thanks in advance.
The topic has been locked.
- holch
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 11637
- Thank you received: 2737
9 years 8 months ago #111697
by holch
I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.
Replied by holch on topic Slider Question in reverse order
First of all: You don't need to write "prompt response would be greatly appreciated". It will not gonna be responded faster this way. If people have an answer, they'll give it to you. If not, not.
Now to your issue: How about writing 5 into slider minimum value and 1 into slider maximum value?
It shows correct for me, but I face one problem: The slider can't be moved. When I go for 1-5 instead 5-1 the slider seems to work fine.
Now to your issue: How about writing 5 into slider minimum value and 1 into slider maximum value?
It shows correct for me, but I face one problem: The slider can't be moved. When I go for 1-5 instead 5-1 the slider seems to work fine.
I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.
The topic has been locked.
- Mazi
- Offline
- Official LimeSurvey Partner
9 years 7 months ago #111717
by Mazi
Best regards/Beste Grüße,
Dr. Marcel Minke
Need Help? We offer professional Limesurvey support: survey-consulting.com
Contact: marcel.minke(at)survey-consulting.com
Replied by Mazi on topic Slider Question in reverse order
Sliders always go from left/min to right/max and thus holch's idea doesn't work because 5 > 1 -> wrong min/max.
Instead, use an array question with a blank sub question and add answer 5 - ... - 1.
Instead, use an array question with a blank sub question and add answer 5 - ... - 1.
Best regards/Beste Grüße,
Dr. Marcel Minke
Need Help? We offer professional Limesurvey support: survey-consulting.com
Contact: marcel.minke(at)survey-consulting.com
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10098
- Thank you received: 3589
9 years 7 months ago #111729
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Slider Question in reverse order
There is no "reverse slide" functionality for the jQuery UI slider but it can be mimicked by replacing the slide function and subtracting the slider value from the slider maximum.
Of course, we would also need to handle things like the show-min, show-max, steps, and decimal places in the accuracy.
So, here's a quick workaround with the following caveats:
- Developed for LS 2.05
- Only tested in IE7-10, Firefox and Chrome
- The "Reset" button will not work
1) Add the following function to the end of template.js:
2) Add this script to the source of every question you want to "reverse":
Of course, we would also need to handle things like the show-min, show-max, steps, and decimal places in the accuracy.
So, here's a quick workaround with the following caveats:
- Developed for LS 2.05
- Only tested in IE7-10, Firefox and Chrome
- The "Reset" button will not work
1) Add the following function to the end of template.js:
Code:
function reverseSlider(qID) { // Identify the question var thisQuestion = $('#question'+qID); //$('span.input', thisQuestion).show() // un-comment this to debug // Reverse the min/max displays $('.answer-item', thisQuestion).each(function(i) { var showMinText = $('.slider-showmin', this).text(); var showMaxText = $('.slider-showmax', this).text(); $('.slider-showmin', this).text(showMaxText); $('.slider-showmax', this).text(showMinText); }); // Initial slider positions $('span.input input[type="text"]', thisQuestion).each(function(i) { if($(this).val() != '') { var thisRow = $(this).closest('li.answer-item'); var thisSlider = $('.ui-slider', thisRow); var sliderValue = $(thisSlider).slider('option', 'max')+$(thisSlider).slider('option', 'min')-$(this).val(); $('.ui-slider', thisRow).slider('option', 'value', sliderValue); $('.slider-callout', thisRow).text($(this).val()); } }); // New slide function $('.ui-slider', thisQuestion).slider( 'option', 'slide', function(event, ui) { // Define a few vars var thisRow = $(this).closest('li.answer-item'); var thisSlider = $(this); var step = $(thisSlider).slider('option', 'step').toString(); var stepDecimals = ''; if(step.indexOf('.') != -1) { stepDecimals = step.length - (step.indexOf('.')+1); } var reverseValue = ''; // Calculate the "reverse" value if(ui.value > $(thisSlider).slider('option', 'max')) { reverseValue = $(thisSlider).slider('option', 'min'); } else if(ui.value < $(thisSlider).slider('option', 'min')) { reverseValue = $(thisSlider).slider('option', 'max'); } else if(stepDecimals > 0) { // Handle decimal places reverseValue = ($(thisSlider).slider('option', 'max')+$(thisSlider).slider('option', 'min')-ui.value).toFixed(stepDecimals); } else{ reverseValue = $(thisSlider).slider('option', 'max')+$(thisSlider).slider('option', 'min')-ui.value; } reverseValue = reverseValue.toString(); reverseValue = reverseValue.replace(/\./,LSvar.sLEMradix); // Load the callout $('.slider_callout', thisRow).text(reverseValue); // Set the data value $('input.text', thisRow).val(reverseValue); $('input.text', thisRow).triggerHandler("keyup"); }); }
2) Add this script to the source of every question you want to "reverse":
Code:
<script type="text/javascript" charset="utf-8"> $(document).ready(function() { reverseSlider({QID}); }); </script>
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Attachments:
The topic has been locked.
- Mazi
- Offline
- Official LimeSurvey Partner
9 years 7 months ago #111732
by Mazi
Best regards/Beste Grüße,
Dr. Marcel Minke
Need Help? We offer professional Limesurvey support: survey-consulting.com
Contact: marcel.minke(at)survey-consulting.com
Replied by Mazi on topic Slider Question in reverse order
Wow, thanks for all your work on this, Tony.
Please add this to the workarounds section of the manual so your valuable work doesn't get lost.
Please add this to the workarounds section of the manual so your valuable work doesn't get lost.
Best regards/Beste Grüße,
Dr. Marcel Minke
Need Help? We offer professional Limesurvey support: survey-consulting.com
Contact: marcel.minke(at)survey-consulting.com
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10098
- Thank you received: 3589
9 years 3 months ago #116116
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Slider Question in reverse order
Added to the workarounds -
manual.limesurvey.org/Workarounds:_Quest...ating#Reverse_Slider
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.