You should use explicit names for your components.  For instance
[EMAIL PROTECTED] and [EMAIL PROTECTED]  Then you will know what
each on is.


On 2/21/06, PSW <[EMAIL PROTECTED]> wrote:
> Hi there!
>
> I got a custom Javascript function working on my page, but I'm insecure
> about its safety because I refer to Tapestry-generated form names.  I
> believe that there must be an accepted way of doing this, but I haven't
> been able to find it.  I'm hoping that other users out there might be
> able to confirm my method or correct it.
>
> *Brief explanation of what the script does:*
> I have a form that has an arbitrary number of rows, and the users count
> them differently for different reasons.  So, they requested that I add a
> form field that they can enter a starting number and have it
> automatically count the rows from that starting number.  If they enter
> three (3) in the form field, the rows will be refreshed to start
> counting at 3.  If they enter -1, same thing (skipping zeros).
>
> *How I did it:*
> In order to get the row count for the loop, I created a hidden field at
> the end of the loop with the count for the script to reference:
>
> <input jwcid="@Any" type="hidden" name="numLines" value="ognl:
> periodDayNumber"/>
>
> Each row (within the loop) has the following tag where the script refers
> to the id of "dayCount0", "dayCount1", etc:
>
> <span jwcid="@Any" id='ognl: "dayCount" + periodDayNumber'>-</span>
>
> The field that contains the starting number (or offset) is an actual
> Tapestry field.  Although I'd like feedback on my approach to this
> problem in general, my most specific question lies here.  The Tapestry code:
>                 <input type="text"
>                        jwcid="@ValidField"
>                        value="ognl: visit.schedule.startingDay"
>                        validator="ognl: beans.int"
>                        displayName="Enter the starting day number (eg.
> -1, 1, -3, but not 0)"
>                        onChange="writeDayNumbers();"/>
>
> This field becomes $ValidField when rendered, and I use it in the
> script.  Somehow, I think this is bad.
>
> /The script:/
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE script PUBLIC
>
>     "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
>
>     "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd";>
>
> <script>
>   <body>
> <![CDATA[
> function writeDayNumbers() {
>    var offset = document.Form0.$ValidField.value;
>    var dayCount = 0;
>    for (i = 0; i <= document.Form0.numLines.value; i++) {
>        var dayCountField = document.getElementById("dayCount" + i);
>        dayCount = parseInt(offset) + parseInt(i)
>          if (dayCount == 0) { // zero is not a legit day. it goes from
> -1 to 1
>                  dayCount++;
>                  offset++;
>          }
>        dayCountField.firstChild.nodeValue=dayCount;
>      }
> }
> ]]>
>   </body>
>   <initialization>
>       writeDayNumbers();
>   </initialization>
> </script>
>
> So, bottom line.  How close am I to having a safe script?  Is the way I
> refer to the form field ok or not?
>
> Thanks so much.  Tapestry is awesome!
>
> Thanks,
> PSW
>
>


--
~chris

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to