I want respondents to enter a list of items of any length and have each of these items captured as its own value. Probably list lengths are 0-10 items.
I know I could do this with a form question (one item per form field), or with a single essay style field after exporting data (run a script that identifies each line break as a separate item). But is there a way to accomplish something like that second option within Qualtrics? I was looking for a way to have Qualtrics recognize each line break in a text box as a distinct item but that doesn't seem to be possible.
Example below. Any suggestions?
_Respondent enters this_
cat
dog
echidna
_My data would be structured like this_
Response 1: cat
Response 2: dog
Response 3: echidna
Response 4:
Response 5:
Page 1 / 1
Hi @NickVEIC,
you're able to distinguish lines using JavaScript. You can divide your text into array using line breaks and than send your particular responses to distinct embedded filed (which must be defined in the survey flow manually).
You could use something like following script. Be aware that if your respondent enters 11 or more lines, the remaining ones won't be stored. You could either constrain your `textarea` element or save it somewhere else by modifying the script.
Qualtrics.SurveyEngine.addOnPageSubmit(function()
{
var my_text = document.getElementById(this.questionId).getElementsByTagName('textarea')[0].value.split('\\n');
var i = 0;
var j;
for (; i < my_text.length; i++) {
j = i + 1;
Qualtrics.SurveyEngine.setEmbeddedData( 'my_field' + j, my_text[i]);
}
});
you're able to distinguish lines using JavaScript. You can divide your text into array using line breaks and than send your particular responses to distinct embedded filed (which must be defined in the survey flow manually).
You could use something like following script. Be aware that if your respondent enters 11 or more lines, the remaining ones won't be stored. You could either constrain your `textarea` element or save it somewhere else by modifying the script.
Qualtrics.SurveyEngine.addOnPageSubmit(function()
{
var my_text = document.getElementById(this.questionId).getElementsByTagName('textarea')[0].value.split('\\n');
var i = 0;
var j;
for (; i < my_text.length; i++) {
j = i + 1;
Qualtrics.SurveyEngine.setEmbeddedData( 'my_field' + j, my_text[i]);
}
});
Hi @fleb,
Thanks for the idea! Sounds like a very useful approach. Unfortunately I have absolutely zero skills with JavaScript. Using your code as it's written, should the manually defined embedded data fields be called "my_field0," "my_field1," etc.?
If I'm off base with that, I may have to just hang on to this idea for a time at which I'm familiar enough with JavaScript to make use of it!
Thanks for the idea! Sounds like a very useful approach. Unfortunately I have absolutely zero skills with JavaScript. Using your code as it's written, should the manually defined embedded data fields be called "my_field0," "my_field1," etc.?
If I'm off base with that, I may have to just hang on to this idea for a time at which I'm familiar enough with JavaScript to make use of it!
Hi @NickVEIC,
you're right with the field names. Regarding to the 11th and higher lines, I've just realized, that the text of the whole field will be stored as a response anyway, so you don't need to implement something else in fact. Just create your fields and copy-paste the code.
Good luck!
you're right with the field names. Regarding to the 11th and higher lines, I've just realized, that the text of the whole field will be stored as a response anyway, so you don't need to implement something else in fact. Just create your fields and copy-paste the code.
Good luck!
Leave a Reply
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.