[Proto-Scripty] Re: Trouble getting Form.EventObserver to work

2010-08-23 Thread T.J. Crowder
Hi,

You want Form.Observer, not Form.EventObserver, and you need to
provide an interval telling it how often to check the form for
changes. It happens that your use case *is* the example used on
Form.Observer:
http://api.prototypejs.org/dom/form/observer/

HTH,
--
T.J. Crowder
Independent Software Consultant
tj / crowder software / com
www.crowdersoftware.com


On Aug 23, 12:36 am, Phil Petree phil.pet...@gmail.com wrote:
 Hey All!

 I'm trying to implement a Form.EventObserver that will change a message
 within the form.  By default the message says: These are your current
 settings. and when a key is pressed I want the message to get changed to
 say Click the Save button to save your new settings.

 I have the function that sets the form message and its working just fine
 (gets called from other routines like during an ajax onComplete).

 My problem is that I can not get the Form.EventObserver to call my routine.

 I have tried putting this in the form header, in a .js file that gets
 included specifically for this form and inline just below the form (which is
 what most examples show) and nadda... zip... zilch... nothing!  No errors
 and it absolutely doesn't get called!

 // this code was used in the header and inline, strip off the script tags
 and the
 // raw javascript code was tried in the included form_name.js file
 script type=text/javascript
 new Form.EventObserver($(myform), updateFormMessage);
 /script
 function updateFormMessage() {
   $('myform_msg').innerHTML = Click the Save button to save your new
 settings.;
   alert(Form Changed!);

 }

 Any suggestions would be appreciated!

 Thanks,

 Pete

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



[Proto-Scripty] Re: Trouble getting Form.EventObserver to work

2010-08-23 Thread T.J. Crowder
Hi,

...although despite the API docs saying *nothing* about it,
Form.EventObserver looks like it might do what you want on an event
(rather than timed) basis. Note that that may not necessarily do what
you want because it uses the `change` event on `select` and `text`
boxes, which is only fired by some browsers when the select/text box
loses focus (not on keypress). The timed check done by Form.Observer
happens more proactively (but -- especially on IE -- can be a drain on
the CPU).

But I would expect this (your quoted code with a /script tag removed
from the middle of it) to *basically* work:

new Form.EventObserver($(myform), updateFormMessage);
function updateFormMessage() {
  $('myform_msg').innerHTML = Click the Save button to save your new
settings.;
  alert(Form Changed!);
}

...and in fact:
http://jsbin.com/aboxu4

HTH,
--
T.J. Crowder
Independent Software Consultant
tj / crowder software / com
www.crowdersoftware.com


On Aug 23, 7:37 am, T.J. Crowder t...@crowdersoftware.com wrote:
 Hi,

 You want Form.Observer, not Form.EventObserver, and you need to
 provide an interval telling it how often to check the form for
 changes. It happens that your use case *is* the example used on
 Form.Observer:http://api.prototypejs.org/dom/form/observer/

 HTH,
 --
 T.J. Crowder
 Independent Software Consultant
 tj / crowder software / comwww.crowdersoftware.com

 On Aug 23, 12:36 am, Phil Petree phil.pet...@gmail.com wrote:



  Hey All!

  I'm trying to implement a Form.EventObserver that will change a message
  within the form.  By default the message says: These are your current
  settings. and when a key is pressed I want the message to get changed to
  say Click the Save button to save your new settings.

  I have the function that sets the form message and its working just fine
  (gets called from other routines like during an ajax onComplete).

  My problem is that I can not get the Form.EventObserver to call my routine.

  I have tried putting this in the form header, in a .js file that gets
  included specifically for this form and inline just below the form (which is
  what most examples show) and nadda... zip... zilch... nothing!  No errors
  and it absolutely doesn't get called!

  // this code was used in the header and inline, strip off the script tags
  and the
  // raw javascript code was tried in the included form_name.js file
  script type=text/javascript
  new Form.EventObserver($(myform), updateFormMessage);
  /script
  function updateFormMessage() {
    $('myform_msg').innerHTML = Click the Save button to save your new
  settings.;
    alert(Form Changed!);

  }

  Any suggestions would be appreciated!

  Thanks,

  Pete

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



[Proto-Scripty] Add event by class name

2010-08-23 Thread elivol
Hello
I have a problem with adding event click to elements by class name.
I'm trying to add event onclick to all input tags that have class
compare_itm by this code:
$$('input.compare_itm').observe('click', myFunction);

But it doesn't work. Is it possible to do in Prototype ?
thanks

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



Re: [Proto-Scripty] Add event by class name

2010-08-23 Thread Johan Arensman
You are trying to apply a single method to a set of items. For this to work
you need to apply the same function to each member of the set using
invoke().

$$('input.compare_itm').invoke('observe', 'click', myFunction);

See also: http://api.prototypejs.org/language/enumerable/prototype/invoke/

Hope this helps!

Greets,
 Johan

On Mon, Aug 23, 2010 at 9:35 AM, elivol eli...@gmail.com wrote:

 Hello
 I have a problem with adding event click to elements by class name.
 I'm trying to add event onclick to all input tags that have class
 compare_itm by this code:
 $$('input.compare_itm').observe('click', myFunction);

 But it doesn't work. Is it possible to do in Prototype ?
 thanks

 --
 You received this message because you are subscribed to the Google Groups
 Prototype  script.aculo.us group.
 To post to this group, send email to
 prototype-scriptacul...@googlegroups.com.
 To unsubscribe from this group, send email to
 prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculous%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/prototype-scriptaculous?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



Re: [Proto-Scripty] Re: Trouble getting Form.EventObserver to work

2010-08-23 Thread Phil Petree
TJ, I found that Form.EventObserver worked when I clicked submit but not
until.. same thing with FormObserver, 1.

On Mon, Aug 23, 2010 at 2:37 AM, T.J. Crowder t...@crowdersoftware.comwrote:

 Hi,

 You want Form.Observer, not Form.EventObserver, and you need to
 provide an interval telling it how often to check the form for
 changes. It happens that your use case *is* the example used on
 Form.Observer:
 http://api.prototypejs.org/dom/form/observer/

 HTH,
 --
 T.J. Crowder
 Independent Software Consultant
 tj / crowder software / com
 www.crowdersoftware.com


 On Aug 23, 12:36 am, Phil Petree phil.pet...@gmail.com wrote:
  Hey All!
 
  I'm trying to implement a Form.EventObserver that will change a message
  within the form.  By default the message says: These are your current
  settings. and when a key is pressed I want the message to get changed to
  say Click the Save button to save your new settings.
 
  I have the function that sets the form message and its working just fine
  (gets called from other routines like during an ajax onComplete).
 
  My problem is that I can not get the Form.EventObserver to call my
 routine.
 
  I have tried putting this in the form header, in a .js file that gets
  included specifically for this form and inline just below the form (which
 is
  what most examples show) and nadda... zip... zilch... nothing!  No errors
  and it absolutely doesn't get called!
 
  // this code was used in the header and inline, strip off the script
 tags
  and the
  // raw javascript code was tried in the included form_name.js file
  script type=text/javascript
  new Form.EventObserver($(myform), updateFormMessage);
  /script
  function updateFormMessage() {
$('myform_msg').innerHTML = Click the Save button to save your new
  settings.;
alert(Form Changed!);
 
  }
 
  Any suggestions would be appreciated!
 
  Thanks,
 
  Pete

 --
 You received this message because you are subscribed to the Google Groups
 Prototype  script.aculo.us group.
 To post to this group, send email to
 prototype-scriptacul...@googlegroups.com.
 To unsubscribe from this group, send email to
 prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculous%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/prototype-scriptaculous?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



[Proto-Scripty] Re: Add event by class name

2010-08-23 Thread T.J. Crowder
Hi,

The $$ function returns an array[1]. Arrays don't have an `observe`
method. However, Prototype does add an `invoke` method[2] to arrays by
mixing the Enumerable mix-in into them. So:

$$('input.compare_itm').invoke('observe', 'click', myFunction);

That said, you'll end up hooking the event on each individual element.
If it's an event that bubbles (and 'click' does bubble), you're
probably better off hooking the event once on an ancestor element
(could even be `document`) that all of those elements share, and then
checking whether the click was on one of your desired elements:

theAncestorElement.observe('click', myFunction);
function myFunction(event) {
var element = event.findElement('input.compare_itm');
if (element) {
// Process it
}
}

That uses the Element#findElement[3] feature. Alternately, as of
Prototype 1.7, you can use the new Element#on[4] feature. I haven't
used it, but I think that looks like this:

theAncestorElement.on('click', 'input.compare_itm', myFunction);
function myFunction(event, element) {
// Use the `element` arg to know which input was clicked
}

Very much worth taking an hour and reading through the API from
beginning to end.

HTH,
--
T.J. Crowder
Independent Software Consultant
tj / crowder software / com
www.crowdersoftware.com

[1] http://api.prototypejs.org/language/dollardollar/
[2] http://api.prototypejs.org/language/enumerable/prototype/invoke/
[3] http://api.prototypejs.org/dom/event/findelement/
[4] http://api.prototypejs.org/dom/event/on/

On Aug 23, 8:35 am, elivol eli...@gmail.com wrote:
 Hello
 I have a problem with adding event click to elements by class name.
 I'm trying to add event onclick to all input tags that have class
 compare_itm by this code:
 $$('input.compare_itm').observe('click', myFunction);

 But it doesn't work. Is it possible to do in Prototype ?
 thanks

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



Re: [Proto-Scripty] Re: Add event by class name

2010-08-23 Thread Johan Arensman
Indeed T.J. catching bubbling events is something I need to consider more
often.

Thanks for the heads up :-)

On Mon, Aug 23, 2010 at 10:05 AM, T.J. Crowder t...@crowdersoftware.comwrote:

 Hi,

 The $$ function returns an array[1]. Arrays don't have an `observe`
 method. However, Prototype does add an `invoke` method[2] to arrays by
 mixing the Enumerable mix-in into them. So:

 $$('input.compare_itm').invoke('observe', 'click', myFunction);

 That said, you'll end up hooking the event on each individual element.
 If it's an event that bubbles (and 'click' does bubble), you're
 probably better off hooking the event once on an ancestor element
 (could even be `document`) that all of those elements share, and then
 checking whether the click was on one of your desired elements:

 theAncestorElement.observe('click', myFunction);
 function myFunction(event) {
var element = event.findElement('input.compare_itm');
if (element) {
// Process it
}
 }

 That uses the Element#findElement[3] feature. Alternately, as of
 Prototype 1.7, you can use the new Element#on[4] feature. I haven't
 used it, but I think that looks like this:

 theAncestorElement.on('click', 'input.compare_itm', myFunction);
 function myFunction(event, element) {
// Use the `element` arg to know which input was clicked
 }

 Very much worth taking an hour and reading through the API from
 beginning to end.

 HTH,
 --
 T.J. Crowder
 Independent Software Consultant
 tj / crowder software / com
 www.crowdersoftware.com

 [1] http://api.prototypejs.org/language/dollardollar/
 [2] http://api.prototypejs.org/language/enumerable/prototype/invoke/
 [3] http://api.prototypejs.org/dom/event/findelement/
 [4] http://api.prototypejs.org/dom/event/on/

 On Aug 23, 8:35 am, elivol eli...@gmail.com wrote:
  Hello
  I have a problem with adding event click to elements by class name.
  I'm trying to add event onclick to all input tags that have class
  compare_itm by this code:
  $$('input.compare_itm').observe('click', myFunction);
 
  But it doesn't work. Is it possible to do in Prototype ?
  thanks

 --
 You received this message because you are subscribed to the Google Groups
 Prototype  script.aculo.us group.
 To post to this group, send email to
 prototype-scriptacul...@googlegroups.com.
 To unsubscribe from this group, send email to
 prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculous%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/prototype-scriptaculous?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



[Proto-Scripty] Re: Prevent enter from submitting form

2010-08-23 Thread jhaagmans
I'm not sure what you mean. I want to submit the login part using
enter, but I want it to use another action. I also want to submit the
registration form using enter, so outside the password field I don't
want to prevent the registration submit from executing.

Thanks.

On Aug 23, 2:51 am, Phil Petree phil.pet...@gmail.com wrote:
 you would need to check an onClick= within the input type=submit

 On Sun, Aug 22, 2010 at 7:37 PM, jhaagmans jaap.haagm...@gmail.com wrote:
  Using an onkeypress action on the password field. Thanks!

  On Aug 23, 1:17 am, Phil Petree phil.pet...@gmail.com wrote:
   how are you calling this from the form?

    On Sat, Aug 21, 2010 at 4:56 AM, jhaagmans jaap.haagm...@gmail.com
  wrote:
Hi,

I'm using a RedBox to display an AJAX registration/login form. The
problem with RedBox is that you can't use two forms inside a RedBox.
I'm not sure why that is, but it just doesn't work. My solution was to
put both the login part and the registration part in one form and
toggle both form-parts using a radio button. So far no problems: it
works nicely. However, I really want both form parts to go to
different actions, so I set the form action to the registration url
and added a button in the (at first hidden) login part that submits
the form to the login url. That also works nicely. When enter is
pressed, however, it will submit to the registration URL. I thought
I'd work around that using a keypress handler on the login textfields,
which works, but after initiating the request to the login action, it
will also send a request to the general form action.

The code I use for the onKeypress handler is this:

function check_login_keypress(myfield, e) {
   var keycode;
   if (window.event) keycode = window.event.keyCode;
   else if (e) keycode = e.which;
   else return true;

   if (keycode == 13)
   {
       new Ajax.Request('/user_sessions', {asynchronous:true,
evalScripts:true, parameters:Form.serialize(myfield.form)});
       return false;
   }
   else
       return true;
}

What am I doing wrong?

Thank you in advance!

Kind regards,
Jaap Haagmans

--
You received this message because you are subscribed to the Google
  Groups
Prototype  script.aculo.us group.
To post to this group, send email to
prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to
prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculous%2bunsubscr...@googlegroups.comprototype-scriptaculou
  s%2bunsubscr...@googlegroups.com s%252bunsubscr...@googlegroups.com
.
For more options, visit this group at
   http://groups.google.com/group/prototype-scriptaculous?hl=en.

  --
   You received this message because you are subscribed to the Google Groups
  Prototype  script.aculo.us group.
  To post to this group, send email to
  prototype-scriptacul...@googlegroups.com.
  To unsubscribe from this group, send email to
  prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculous%2bunsubscr...@googlegroups.com
  .
  For more options, visit this group at
 http://groups.google.com/group/prototype-scriptaculous?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



Re: [Proto-Scripty] Re: Prevent enter from submitting form

2010-08-23 Thread Johan Arensman
You could also try to observe the form and prevent it from submitting:

YourFormElement.observe('submit', function submitEvent(event) {
  event.stop(); // stops the form from actually submitting
  // other code you would like to run
});

On Mon, Aug 23, 2010 at 10:24 AM, jhaagmans jaap.haagm...@gmail.com wrote:

 I'm not sure what you mean. I want to submit the login part using
 enter, but I want it to use another action. I also want to submit the
 registration form using enter, so outside the password field I don't
 want to prevent the registration submit from executing.

 Thanks.

 On Aug 23, 2:51 am, Phil Petree phil.pet...@gmail.com wrote:
  you would need to check an onClick= within the input type=submit
 
  On Sun, Aug 22, 2010 at 7:37 PM, jhaagmans jaap.haagm...@gmail.com
 wrote:
   Using an onkeypress action on the password field. Thanks!
 
   On Aug 23, 1:17 am, Phil Petree phil.pet...@gmail.com wrote:
how are you calling this from the form?
 
 On Sat, Aug 21, 2010 at 4:56 AM, jhaagmans jaap.haagm...@gmail.com
 
   wrote:
 Hi,
 
 I'm using a RedBox to display an AJAX registration/login form. The
 problem with RedBox is that you can't use two forms inside a
 RedBox.
 I'm not sure why that is, but it just doesn't work. My solution was
 to
 put both the login part and the registration part in one form and
 toggle both form-parts using a radio button. So far no problems: it
 works nicely. However, I really want both form parts to go to
 different actions, so I set the form action to the registration url
 and added a button in the (at first hidden) login part that submits
 the form to the login url. That also works nicely. When enter is
 pressed, however, it will submit to the registration URL. I thought
 I'd work around that using a keypress handler on the login
 textfields,
 which works, but after initiating the request to the login action,
 it
 will also send a request to the general form action.
 
 The code I use for the onKeypress handler is this:
 
 function check_login_keypress(myfield, e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
 
if (keycode == 13)
{
new Ajax.Request('/user_sessions', {asynchronous:true,
 evalScripts:true, parameters:Form.serialize(myfield.form)});
return false;
}
else
return true;
 }
 
 What am I doing wrong?
 
 Thank you in advance!
 
 Kind regards,
 Jaap Haagmans
 
 --
 You received this message because you are subscribed to the Google
   Groups
 Prototype  script.aculo.us group.
 To post to this group, send email to
 prototype-scriptacul...@googlegroups.com.
 To unsubscribe from this group, send email to
 prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculous%2bunsubscr...@googlegroups.com
 prototype-scriptaculous%2bunsubscr...@googlegroups.comprototype-scriptaculous%252bunsubscr...@googlegroups.com
 prototype-scriptaculou
   s%2bunsubscr...@googlegroups.com s%252bunsubscr...@googlegroups.com
 s%252bunsubscr...@googlegroups.com s%25252bunsubscr...@googlegroups.com
 
 .
 For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en.
 
   --
You received this message because you are subscribed to the Google
 Groups
   Prototype  script.aculo.us group.
   To post to this group, send email to
   prototype-scriptacul...@googlegroups.com.
   To unsubscribe from this group, send email to
   prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculous%2bunsubscr...@googlegroups.com
 prototype-scriptaculous%2bunsubscr...@googlegroups.comprototype-scriptaculous%252bunsubscr...@googlegroups.com
 
   .
   For more options, visit this group at
  http://groups.google.com/group/prototype-scriptaculous?hl=en.
 
 

 --
 You received this message because you are subscribed to the Google Groups
 Prototype  script.aculo.us group.
 To post to this group, send email to
 prototype-scriptacul...@googlegroups.com.
 To unsubscribe from this group, send email to
 prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculous%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/prototype-scriptaculous?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



[Proto-Scripty] Re: Add event by class name

2010-08-23 Thread elivol
thanks, it works !
Another question: how can I send element as argument to the click
function ?
I'm trying to use this:
$$('input.compare_itm').invoke('observe', 'click',
myFunction.bindAsEventListener('compare', this ));

function myFunction(group, elm){
alert(elm.value); // undefined
}


On Aug 23, 11:00 am, Johan Arensman johanm...@gmail.com wrote:
 You are trying to apply a single method to a set of items. For this to work
 you need to apply the same function to each member of the set using
 invoke().

 $$('input.compare_itm').invoke('observe', 'click', myFunction);

 See also:http://api.prototypejs.org/language/enumerable/prototype/invoke/

 Hope this helps!

 Greets,
  Johan

 On Mon, Aug 23, 2010 at 9:35 AM, elivol eli...@gmail.com wrote:
  Hello
  I have a problem with adding event click to elements by class name.
  I'm trying to add event onclick to all input tags that have class
  compare_itm by this code:
  $$('input.compare_itm').observe('click', myFunction);

  But it doesn't work. Is it possible to do in Prototype ?
  thanks

  --
  You received this message because you are subscribed to the Google Groups
  Prototype  script.aculo.us group.
  To post to this group, send email to
  prototype-scriptacul...@googlegroups.com.
  To unsubscribe from this group, send email to
  prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculous%2bunsubscr...@googlegroups.com
  .
  For more options, visit this group at
 http://groups.google.com/group/prototype-scriptaculous?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



[Proto-Scripty] Re: Add event by class name

2010-08-23 Thread T.J. Crowder
Hi,

 Another question: how can I send element as argument to the click
 function ?

If you're using `observe`, Prototype ensures that within the event
handler, `this` refers to the element on which you called `observe`.
If you're using `on`, then the element will be the second argument to
your event handler. So basically, for the element itself, you don't
have to. E.g.:

$$('input.compare_itm').invoke('observe', 'click', myFunction);
function myFunction(event) {
// `this` points to the input that was being observed, so for
instance:
alert(You clicked the field with the value  + this.value);
}

If you want to burn in additional arguments other than the element,
you can do that via Function#bind[1] (if you also need to change what
`this` means within the handler) or Function#curry[2] (if you don't).
Although you can use Function#bindAsEventListener, there's almost
never any reason to[3].

So for instance, if you want to curry the string compare:

$$('input.compare_itm').invoke('observe', 'click',
myFunction.curry(compare));
function myFunction(group, event) {
// `this` points to the input that was being observed, so for
instance:
alert(You clicked the field with the value  + this.value + ,
group =  + group);
}

Note that with #bind or #curry, the curried arguments appear before
the event argument. If you use #bindAsEventListener, they appear after
it.

Also note that if you use #bind or #bindAsEventListener, you're going
to override Prototype's default handling that ensures that `this` is
the element that was observed.

Looking at your quoted code, I suspect #curry plus Prototype's default
handling of `this` is what you're looking for.

[1] http://api.prototypejs.org/language/function/prototype/bind/
[2] http://api.prototypejs.org/language/function/prototype/curry/
[3] 
http://proto-scripty.wikidot.com/prototype:tip-you-probably-don-t-need-bindaseventlistener

HTH,
--
T.J. Crowder
Independent Software Consultant
tj / crowder software / com
www.crowdersoftware.com


On Aug 23, 10:10 am, elivol eli...@gmail.com wrote:
 thanks, it works !
 Another question: how can I send element as argument to the click
 function ?
 I'm trying to use this:
 $$('input.compare_itm').invoke('observe', 'click',
 myFunction.bindAsEventListener('compare', this ));

 function myFunction(group, elm){
 alert(elm.value); // undefined

 }

 On Aug 23, 11:00 am, Johan Arensman johanm...@gmail.com wrote:



  You are trying to apply a single method to a set of items. For this to work
  you need to apply the same function to each member of the set using
  invoke().

  $$('input.compare_itm').invoke('observe', 'click', myFunction);

  See also:http://api.prototypejs.org/language/enumerable/prototype/invoke/

  Hope this helps!

  Greets,
   Johan

  On Mon, Aug 23, 2010 at 9:35 AM, elivol eli...@gmail.com wrote:
   Hello
   I have a problem with adding event click to elements by class name.
   I'm trying to add event onclick to all input tags that have class
   compare_itm by this code:
   $$('input.compare_itm').observe('click', myFunction);

   But it doesn't work. Is it possible to do in Prototype ?
   thanks

   --
   You received this message because you are subscribed to the Google Groups
   Prototype  script.aculo.us group.
   To post to this group, send email to
   prototype-scriptacul...@googlegroups.com.
   To unsubscribe from this group, send email to
   prototype-scriptaculous+unsubscr...@googlegroups.comprototype-scriptaculou
s%2bunsubscr...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/prototype-scriptaculous?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.