Forum Discussion
Keyword or Phrases Javascript
Hi there SaeedChopdat you will have to use JavaScript as we cannot look at a string of text in Storyline and see if it "contains" a word.
I'm going to assume you are comfortable with Storyline and Storyline triggers. In order to use the JavaScript, you can use Storyline variables, and change the value of them to trigger an outcome in Storyline. For example, a "step01Correct" text variable could be initialised as "" and when you evaluate if step 01 is correct, the value of "step01Correct" could be set to "true" or "false" which then can trigger an action in Storyline (when variable changes). The reason I didn't opt for a "True/False" variable, is you need three values in order to detect a change in the variable value. As setting a variable to "false" when already "false" will not trigger a variable change action. OK, that's that bit.
A consideration for the JavaScript function too is that it should find whole words only. Otherwise you may get a false positive on "crack" in a word like "firecracker".
Add the following function to your project (JavaScript on timeline start on the slide with the interaction)
window.findWordInString = function(slvar, word, slresultVar) {
// get the storyline player
const player = GetPlayer();
// get the string from the storyline variable
const text = player.GetVar(slvar);
// check if the text and word are strings
if (typeof text !== 'string' || typeof word !== 'string') {
throw new TypeError('Both text and word must be strings');
}
if (text.length === 0 || word.length === 0) {
return false;
}
// Create a regular expression pattern with word boundaries
const pattern = `\\b${word}\\b`;
// Add case-insensitive flag if not case sensitive
const regex = new RegExp(pattern, 'i');
// test the regex against the text
const result = regex.test(text);
// set the result variable with the result in storyline
player.SetVar(slresultVar, result+"");
}
You will then call this function when you need to. The function takes three arguments.
slvar = Name of the Storyline variable with the string the user has type (typically associated with the input text box)
word = The word you are searching for in the string
slresultVar = Name of the Storyline variable that will store the result. Initialised as "" and then set to either "true" or "false"
The function could be called in anyway you would like. For example, executing JavaScript on a button click. The following function assumes the following:
step01 is a Storyline variable (type:Text) that is associated with the input box.
"egg" is the word we are searching for in step01
step01Result is a Storyline variable (type:Text) that is used to trigger another action in Storyline when "variable changes". The value it will change to is either "true" or "false".
window.findWordInString(step01, "egg", step01Result);