Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.
SOLVED

Trim only leading and trailing spaces from a field

Avatar

Level 5

Is there a way to trim only the leading and trailing spaces from a field?  I have a Name field, which I later split so I can generate using just the first name, using the rawValue.split method.  This way I can generate an e-mail that says Dear John, instead of Dear John Smith by pulling from that field.  The problem I have encountered there is that sometimes the person typing the name leaves a leading space before the name, so the e-mail gets generated with no name (so it says "Dear ,".  Any help is greatly appreciated.


1 Accepted Solution

Avatar

Correct answer by
Level 10

Alright, thanks for saying about the null value, your event is good, everything's fine.

Although, if you want to change the returned null value, here is the changes for returning nothing instead :

function trim(strValue){

    var str = new String(strValue);

    return strValue !== null ? str.replace(/(^\s*)|(\s*$)/g,"") : "";

}

Enjoy!

View solution in original post

7 Replies

Avatar

Level 10

Hi there,

here is a function which removes all spaces in the beginning and end of a string :

Hope this will help ya

Avatar

Level 5

OK, that's great, thanks. Now, sorry I don't know how to read that regexp, can you explain how it works, so I know for the future?  And in what event do I put it?  I appreciate the help.

Avatar

Level 10

Yes sure,

This function can be called from a script object, so at anytime you want to call the trim function to retrieve a string with all spaces removed at the beginning and end of a string, feel free to call it.

Enjoy!

Avatar

Level 5

OK, thanks for that explanation, very helpful.  So, I have one more question, sorry.  I'm not that experienced with javascript, so I don't know how to call the function.  Do I have to create a new script object and put your script in there?

Avatar

Level 10

Well either you insert the function within all events you need to call the trim function or you put it only once in a script object, which you can access from anywhere in the form by calling the script object then the function...


By putting the function within a script object, you only need this one occurrence to call the function anywhere in there form,

Otherwise if you insert the function within the click event of a button, the function is only accessible within that event

Avatar

Level 5

It worked, thanks!  I haven't used many custom functions before, so I didn't know had to use the objName.functionName format to call it.  So I set it up like below, in the Exit event, because if I left it without the if statement and then typed something, exited the field, and came back to delete it, it would add "null" (in actual text) to the field.  Please let me know if you see anything I need to fix.


// remove leading and trailing spaces


if (this.rawValue != null) {


  this.rawValue = objSpaceTrim.trim(this.rawValue);


}



Avatar

Correct answer by
Level 10

Alright, thanks for saying about the null value, your event is good, everything's fine.

Although, if you want to change the returned null value, here is the changes for returning nothing instead :

function trim(strValue){

    var str = new String(strValue);

    return strValue !== null ? str.replace(/(^\s*)|(\s*$)/g,"") : "";

}

Enjoy!