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.

Should this be a function?

Avatar

Level 2

Hi all, I have the code below attached to about 3000 small boxes that insert a text when clicked, it works very well, but I can't help thinking that it's not very efficient!

I've tried fragments, but each box needs to be referenced and I assume that if you change one fragment you change them all.

I also looked at functions and script objects, but I'm lost as it seems to me that you can't use (if - then) etc. within a function.

Would someone be kind enough to tell me if it's possible to convert this to a function and roughly how, please.

Many thanks..Sean

var deleted = substr(Header.currnturl[0].rawValue,64,150)

if (Header.currnturl[0].rawValue == null and $.rawValue == null) then

xfa.host.messageBox("Please paste a valid URL link into the first page", "No URL Link?", 0, 0)

elseif

($.rawValue == null) then

$.rawValue = deleted

$.access = "readOnly"

Rectangle10.assist.toolTip = deleted

else

var urljoin = concat((Header.urlstart[0].rawValue),

($.rawValue))

xfa.host.gotoURL(urljoin)

endif

1 Reply

Avatar

Level 10

Hi,

It can be a function, which will make it easier to maintain. Script objects only accept javascript, so you would need to change your script to suit.

The click event would look something like:

yourScriptObject.urlScript(this.rawValue);

Then the script object (yourScriptObject) would contain a function (called urlScript):

function urlScript(fldValue) {

     var vDeleted = Header.currnturl[0].rawValue.substring(64,150) // the second parameter is one greater than the last character you want from the string

     if (Header.currnturl[0].rawValue == null && fldValue == null)

     {

          xfa.host.messageBox("Please paste a valid URL link into the first page", "No URL Link?", 0, 0);

     }

     else if (fldValue == null)

     {

          this.rawValue = vDeleted;

          this.access = "readOnly";

          Rectangle10.assist.toolTip = vDeleted;

     }

     else

     {

          var urljoin = Header.urlstart[0].rawValue.toString() + fldValue;

          xfa.host.gotoURL(urljoin);

     }

} // this is the closing bracket in the function         

You will probably need to adapt / change / test...

Good luck,

N.