Check out the LimeSurvey source code on GitHub!

Automatically proceed to next question (without clicking "next")

More
2 years 10 months ago - 2 years 10 months ago #107145 by tpartner
You have some syntax problems where inserting the timeoutDialog - it all needs to be on one line or escaped properly - see below.

Having said that, I just don't get what you are trying to do with the IF statement.
- You say if groupIndex is greater than or equal to 0, click Submit, otherwise redirect the page.
- Well, groupIndex will always be greater than or equal to 0 so the redirect will never happen.
- The #movesubmitbtn element only exists on the last page of the survey, so, unless you are there, nothing will ever happen.

	$(document).ready(function(){
 
		var txtAlertMessage = 'Anyone there? Do you want to continue?';		
		var txtCloseButton = 'Continue';
		var redirectURL = location.pathname.split('index.php')[0];
		var timeToAlert = 2; // In seconds
		var timeToRedirect = 2; // In seconds
 
		// Page timeout action
		function pageTimeout() {
			// Find the group index - 
			var groupIndex = $('div[id^="group-"]').attr('id').split('group-')[1];
 
			if(groupIndex >= 0) {
				$('#movesubmitbtn').click();
			}	
			else {
				window.location = redirectURL;
			}
		}	
 
		// Alert Timer
		var alertTimer;
		function startAlertTimer() {
			alertTimer = setTimeout(function() {
				$('.custom-dialog-1').dialog('open');
			},timeToAlert*1000);
		}		
		function stopAlertTimer() {
			clearTimeout(alertTimer);
		}		
		function restartAlertTimer() {
			clearTimeout(alertTimer);
			startAlertTimer();
		}
		startAlertTimer();
 
		// Redirect Timer
		var redirectTimer;
		function startRedirectTimer() {
			redirectTimer = setTimeout(function() {
				pageTimeout();
			},timeToRedirect*1000);
		}		
		function stopRedirectTimer() {
			clearTimeout(redirectTimer);
		}		
		function restartRedirectTimer() {
			clearTimeout(redirectTimer);
			startRedirectTimer();
		}	
 
		// Insert the alert dialog
		var timeoutDialog = '<div class="custom-dialog-1">\
								<div class="text">'+txtAlertMessage+'</div>\
								<div class="buttons">\
									<button class="close" type="button" value="close">'+txtCloseButton+'</button>\
								</div>\
							</div>';
		$(timeoutDialog).dialog({
			autoOpen: false,
			open: function( event, ui ) {
				startRedirectTimer();
				//IE 10 z-index hack
				$('.ui-widget-overlay').css('z-index', Number($('.ui-widget-overlay').css('z-index')) - 2);
			},
			close: function( event, ui ) {
				stopRedirectTimer();
				restartAlertTimer();
			},
			width: 400,
			modal: true,
			resizable: false,
			draggable: true,
			closeOnEscape: true,
			dialogClass: 'timeout-dialog'
		});
		$('.timeout-dialog button').click(function() {
			$('.custom-dialog-1').dialog('close');
		});
 
		// Listener for activity
		$('#limesurvey').on('click keyup paste change' ,function(event){ 
			restartAlertTimer();
		});
	});

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last Edit: 2 years 10 months ago by tpartner.

Please Log in to join the conversation.

More
2 years 10 months ago #107152 by dweisser
Ahh, thank you. It makes sense now.

Please Log in to join the conversation.

More
2 years 3 months ago - 2 years 3 months ago #114492 by SurveyDennis
Hi,

Just curious, I am using this example with a normal list radio.
I have the question set to mandatory.

The code is working however I don't proceed to the next question properly.
A message popups -
Please use the LimeSurvey navigation buttons or index.
It appears you attempted to use the browser back button to re-submit a page.

(although I clicked the answer).
So in that case it looks like it is not saving the answer.
<script type="text/javascript" charset="utf-8">
	$(document).ready(function(){
 
		$( '#question{QID} input.radio' ).click(function() {
			document.limesurvey.submit();
		});
	});
</script>

Any ideas?
Thanks, Dennis

Design is a method of problem solving. Applying design in surveys helps solving the biggest challenges we currently face in market research.
Last Edit: 2 years 3 months ago by SurveyDennis.

Please Log in to join the conversation.

More
2 years 3 months ago #114496 by tpartner
LimeSurvey version?

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

Please Log in to join the conversation.

More
2 years 3 months ago #114497 by SurveyDennis
Version 2.05

Design is a method of problem solving. Applying design in surveys helps solving the biggest challenges we currently face in market research.

Please Log in to join the conversation.

More
2 years 3 months ago #114498 by tpartner
Try this:
<script type="text/javascript" charset="utf-8">	
	$(document).ready(function(){
 
		$('#question{QID} input.radio').click(function() {
			checkconditions($(this).attr('value'), $(this).attr('name'), $(this).attr('type'))
			$('#movenextbtn, #movesubmitbtn').trigger('click');
		});
	});
</script>

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The following user(s) said Thank You: SurveyDennis

Please Log in to join the conversation.

More
2 years 3 months ago #114499 by SurveyDennis
Many thanks, that did the trick!!
Much appreciated

Design is a method of problem solving. Applying design in surveys helps solving the biggest challenges we currently face in market research.

Please Log in to join the conversation.

More
8 months 1 week ago #137511 by MrHappyAndCo
Hey there, I've been using the following code for quite some time now to automatically proceed to the next question:
<script type="text/javascript" charset="utf-8">	
	$(document).ready(function(){
 
		$('#question{QID} input.radio').click(function() {
			checkconditions($(this).attr('value'), $(this).attr('name'), $(this).attr('type'))
			$('#movenextbtn, #movesubmitbtn').trigger('click');
		});
	});
</script>

Unfortunately, now that I upgraded LimeSurvey (Version 2.50+ Build 160606) I get the following message when choosing an answer option:

One or more mandatory questions have not been answered . Please answer this first to proceed !


Any idea why this happens?

Thanks for the help!

Please Log in to join the conversation.

More
8 months 1 week ago #137525 by tpartner
It works fine for me using the default template and list-radio questions. What template and question types are you using?

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

Please Log in to join the conversation.

Imprint                   Privacy policy         General Terms & Conditions         Revocation information and revocation form