Why doesnt tapestry attach events to the DOM instead of using onClick?

Zack


Chris Lewis-5 wrote:
> 
> Hi Lucca,
> 
> I'd been looking for a good example to use to write a wiki explaining
> the integration javascript by Tapestry, and your request gave me what I
> was looking for. Check out the article here:
> http://wiki.apache.org/tapestry/Tapestry5AndJavaScriptExplained (project
> source: http://thegodcode.net/tapestry5/jsclarity-project.zip). Apart
> from discussing in detail how T5 integrates JS, it shows how to create a
> mixin that can be added to link components. The mixin attaches js code
> to the component, so that when the link is clicked the user is presented
> with a confirmation box. Canceling the box cancels the click, while OK
> allows it to proceed as normal. This should be useful for those looking
> to add click confirmation functionality, but in your case I'm not sure
> if it will help. I ask you to try and see, but the problem will be how
> T5 attaches the js handlers for the ajax code (that is, they may fire
> before the confirmation code).
> 
> Anyway, I think it will be helpful to those looking for such an
> explanation, and I hope it helps you.
> 
> chris
> 
> Luca Fossato wrote:
>> Hi all,
>>
>> I'm playing with actionlink and zones to understand T5 ajax functions
>> (Tapestry 5.0.11).
>> I'd like to define an actionlink like this one:
>>
>> <t:actionlink t:id="deleteLink" context="myContext"
>> t:zone="zoneToUpdate" onclick="confirm('are you sure to delete this
>> record ?');">delete</t:actionlink>
>>
>> where the onclick handler uses a javascript confirmation dialog to ask
>> to the user if he/she wants to delete the selected record.
>> It seems to me the Tapestry.linkZone js function "eats" the user
>> onclick handler and set its own - so it is not possible to execute any
>> js code prior to invoke the ajax call.
>>
>> Is it correct or am I missing something ?
>>
>> I tried to "fix" this behaviour, modifying a bit the Tapestry.linkZone
>> function (just an experiment):
>>
>> --- cut here ---
>>
>> /** Convert a form or link into a trigger of an Ajax update that
>>  * updates the indicated Zone.
>>  */
>> linkZone : function(element, zoneDiv)
>> {
>>   // ... original code until "Otherwise, assume it's just an ordinary
>> link." comment...
>>
>>   // Otherwise, assume it's just an ordinary link.
>>   var onClickValue = element.getAttribute("onclick");
>>   if (onClickValue != null)
>>   {
>>     element.setAttribute("tapestry5_onbeforeajax",  onClickValue);
>>   }
>>
>>   var handler = function(event)
>>   {
>>       var onBeforeAjaxRes = true;
>>       var onBeforeAjaxValue =
>> element.getAttribute("tapestry5_onbeforeajax");
>>       if (onBeforeAjaxValue != null)
>>       {
>>         onBeforeAjaxRes = eval(onBeforeAjaxValue);
>>       }
>>
>>       // execute the Ajax request only if the original onclick
>> attribute was not set or if the evaluation
>>       // of the related function returned true;
>>       if (onBeforeAjaxRes === undefined || onBeforeAjaxRes)
>>         new Ajax.Request(element.href, { onSuccess : successHandler });
>>
>>       return false;
>>   };
>>
>>   element.onclick = handler;
>> },  // end of linkZone function
>>
>> --- cut here ---
>>
>> that is a 10 minutes "fix", so probably it's not the best solution.
>> Anyway it seems to work fine for my experiment ;^)
>> To block the execution of the ajax call, do NOT use a return statement
>> inside the onclick handler. Example:
>>
>> <t:actionlink t:id="deleteLink" t:zone="zoneToUpdate" onclick="return
>> myFunction(myParam);">delete</t:actionlink>
>>
>> use this instead:
>>
>> <t:actionlink t:id="deleteLink" t:zone="zoneToUpdate"
>> onclick="myFunction(myParam);">delete</t:actionlink>
>>
>> because eval() returns the value of the last expression evaluated.
>> http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Functions:eval
>>
>> Does this stuff make sense for you ?? ;^)
>>
>> Thank you,
>> Luca Fossato
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>   
> 
> -- 
> http://thegodcode.net
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/T5-actionlink%2C-ajax-zone-and-user-onclick-handler-tp16729287p16819660.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


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

Reply via email to