Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Prevent accidentially closing the survey

Prevent accidentially closing the survey 9 Monate 4 Tage her #111051

  • LS_SR
  • LS_SRs Avatar
  • OFFLINE
  • Junior Lime
  • Beiträge: 23
  • Dank erhalten: 2
  • Karma: 0
Thanks for your fast answer.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Prevent accidentially closing the survey 3 Monate 2 Wochen her #116036

  • fanepic
  • fanepics Avatar
  • OFFLINE
  • Junior Lime
  • Beiträge: 20
  • Karma: 0
Thanks a lot for your Code.
Do you now how it's possible to make en exception for the languagechanger?

Cheers
Benny
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Prevent accidentially closing the survey 3 Monate 2 Wochen her #116038

  • jonsen
  • jonsens Avatar
  • OFFLINE
  • Expert Lime
  • Beiträge: 83
  • Dank erhalten: 8
  • Karma: 1
Hi fanepic,

please try to add ".changelang" to the jQuery "on" action by changing this:
$(document).on('click',".button,[name='move']", ...

to this:
$(document).on('click',".button,.changelang,[name='move']", ...

Please leave a quick comment if this works, otherwise I'll have a closer look.

Best
jonsen
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Folgende Benutzer bedankten sich: fanepic

Prevent accidentially closing the survey 3 Monate 2 Wochen her #116039

  • jonsen
  • jonsens Avatar
  • OFFLINE
  • Expert Lime
  • Beiträge: 83
  • Dank erhalten: 8
  • Karma: 1
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Prevent accidentially closing the survey 3 Monate 2 Wochen her #116042

  • fanepic
  • fanepics Avatar
  • OFFLINE
  • Junior Lime
  • Beiträge: 20
  • Karma: 0
Thank you jonson works fine.

Do you also now how to make it Multilanguage like only show if it's German?

Regards
fanepic
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Prevent accidentially closing the survey 3 Monate 1 Woche her #116085

  • Mazi
  • Mazis Avatar
  • OFFLINE
  • LimeSurvey Team
  • Beiträge: 5601
  • Dank erhalten: 320
  • Karma: 255
You can try using the {LANG} placeholder and maybe put everything into an IF statement like
...
if({LANG}=='de')
{
...
}

{LANG} should get replaced by Limesurvey with the current survey language.

Best regards/Beste Grüße,
Dr. Marcel Minke
(Limesurvey Head of Support)
Need Help? We offer professional Limesurvey support
Contact: marcel.minke(at)limesurvey.org'"
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Prevent accidentially closing the survey 1 Monat 8 Stunden her #118624

  • jonsen
  • jonsens Avatar
  • OFFLINE
  • Expert Lime
  • Beiträge: 83
  • Dank erhalten: 8
  • Karma: 1
Hi everyone,

the code has been working well on all of my past surveys. BUT now I have a survey which contains a file uploader question and there IT DOESN'T WORK CORRECTLY!

How to replicate the problem:
1. Add the code ( manual.limesurvey.org/Workarounds:_Surve...y_closing_the_survey ) to your template.js
2. Add a file uploader question
3. Navigate through the survey. If you open the file uploader, you will be asked if you want to leave the page EVEN THOUGH you use the LS navigation (the "next" or "previous" buttons).
4. Notice that you will not have the this problem if you just pass through that question without opening the uploader iframe.

The function works based on a <input type="hidden" id="submitted" /> tag being added when using the navigation, which then again is being checked for by the "goodbye" function to see if the buttons were used. The interesting point: Even though this tag is appeded to the end of the <body> correctly when using the navigation (even after opening the file uploader), the goodbye function does not recognize it. How can this be? It works flawlessly for all other pages, why not here? Does it have something to do with the iframe (which is the only differnce to other pages that I can see)?

I'm really looking forward to a new perspective on this, as I have been stuck on this for a week now. Thank you very much!

Best
Jonsen
Letzte Änderung: 1 Monat 8 Stunden her von jonsen.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Prevent accidentially closing the survey 4 Wochen 2 Tage her #118659

  • tpartner
  • tpartners Avatar
  • OFFLINE
  • LimeSurvey Team
  • Beiträge: 4720
  • Dank erhalten: 953
  • Karma: 410
Yeah, I think the problem is that, with the introduction of a second <body> element in the iframe, the scope to look for the "#submitted" element gets messed up.

Additionally, I'm not keen on introducing unnecessary input elements - I think it's better handled by adding a class to the <body> element.

So, try this which uses a class instead of a hidden input to indicate a valid move and limits the scope for the <body> elements to the top window (ignoring anything in an iframe).

function goodbye(e) {
	if(!$('body', top.document).hasClass('submitted')) { //check if a button was used to navigate or the survey is completed
		if(!e) e = window.event;
		//e.cancelBubble is supported by IE - this will kill the bubbling process.
		e.cancelBubble = true;
		e.returnValue = 'Are you sure you want to quit this survey?'; //This is displayed on the dialog for IE
 
		//e.stopPropagation works in Firefox.
		if (e.stopPropagation) {
			e.stopPropagation();
			e.preventDefault();
		}
 
		return 'Are you sure you want to quit this survey?'; // For chrome
	}
 
}
 
window.onbeforeunload = goodbye;
 
$(document).on('click', '.button, .changelang, [name="move"]', function(event){ //added .changelang here, please add other classes if you know which should be allowed to navigate
	$('body', top.document).addClass('submitted');
});
Cheers,
Tony Partner

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

LimeSurvey is open-source and run entirely by volunteers so please consider donating to support the project.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Folgende Benutzer bedankten sich: jonsen

Prevent accidentially closing the survey 4 Wochen 1 Tag her #118701

  • jonsen
  • jonsens Avatar
  • OFFLINE
  • Expert Lime
  • Beiträge: 83
  • Dank erhalten: 8
  • Karma: 1
Thank you, Tony! I re-added !$('#completed').length for the final page, so one can leave the finished survey without being asked and also tried to fix it for the template editor by looking for the '.templateeditor' class...

Hope this does it for now! I updated the workaround in the wiki...
//FEATURES: (2015-03-27) Now with fix for iframes (e.g. file uploader) and the template editor 
function goodbye(e) {
    if(!$('body', top.document).hasClass('submitted') && !$('#completed').length && !$('.templateeditor', top.document).length) { //check if a button was used to navigate OR the survey is completed OR the template is displayed in the template editor
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: ITEd
Ladezeit der Seite: 0.301 Sekunden
Donation Image