Maintaining line breaks when "Essay" type is saved | XM Community
Skip to main content
Hi all,

First time post as I'm a bit stumped.

The issue:
Qualtrics seems to not maintain formatting upon submission of multine/essay type questions.

I thought I could tackle this with some jQuery but I'm having no luck still.

My solution attempt:
- Essay type question
- on the question is the following JS/jQuery:

Qualtrics.SurveyEngine.addOnload(function()
{
/*Place your JavaScript here to run when the page loads*/
console.log("loaded question "+this.questionId);
jQuery("#"+this.questionId+" textarea").on("blur", function() {
jQuery(this).val().replace("\\n","<br>");
});


});

Qualtrics.SurveyEngine.addOnReady(function()
{
/*Place your JavaScript here to run when the page is fully displayed*/


});

Qualtrics.SurveyEngine.addOnUnload(function()
{

});

Coding steps:

1. Targetting the textarea
2. When it unfocuses
3. Change the value contained within

I seem to be stuck on step 3 - the blur works fine. It's difficult to tell whether I've succeeded or not (recommendations here appreciated too - if there's a good function to present unencoded text so I can visibly spot <br\\> vs \\n ?)

This whole scenario seems silly as "multi-line" fields are still "actually-really-one-line" fields.

Any help much appreciated - completely new to the API, and rusty with my jQuery.
First, providing a string argument to .replace() only replaces the first instance. You need to use regex to do a global replace. Also, you never updated the value. Try this instead:
```
this.value = this.value.replace(/\\n\\r?/g, "<br>");
```
If you want to do it so the respondent doesn't see it, use the addOnPageSubmit function instead of a blur event.

I don't remember ever testing it, but if the Qualtrics server strips html tags from inputs (for security) you'll loose the breaks anyway.
Damn,

Well I mean thank you for the information - that makes sense - but it looks like the later might hold true as far as stripping HTML :(

Would be nice if Qualtrics only stripped out more potentially abusive elements like <iframe\\>s. Seems a bit overkill to strip out <br\\>s

Leave a Reply