Yes, prototype handles that (so it does exist)
Function.prototype.bindAsEventListener = function(object) {
var __method = this;
return function(event) {
return __method.call(object, event || window.event);
}
}
Now… just attaching the event handler as you suggested works (as I would
expect). It appears that for some (DAMNEDDDDD) reason, the DOM2 event
handler attachment methods just do not work with the keyCode. It’s
always just returning the UNICODE for the capital letter. That may be
W3C recommended (not sure), but either way, it’s stupid. Stupid Stupid
Stupid. sTUpiD.
Sorry… So now I guess I either use the old method of $(‘id’).onkeypress
= method, or I add some stupid “is the shift key down, and if so, is the
CAPSLOCK key down…” logic…
Hrmm… stupid…
------------------------------------------------------------------------
*From:* [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] *On Behalf Of
*Gregory Hill
*Sent:* Friday, March 03, 2006 4:14 PM
*To:* rails-spinoffs@lists.rubyonrails.org
*Subject:* RE: [Rails-spinoffs] event.keyCode broken in prototype?
Well, my point was that in IE, the variable that is passed to the
function does not exist, so you need to reference the global ‘event’
object. Or does prototype handle that in the bindAsEventListener code
already?
What happens if you do this, instead of the inline handler?
$(‘id’).onkeypress = showKeyPressed;
That should at least tell you if it’s something specific to using
prototype or whether it just doesn’t work at all if you don’t use an
inline handler.
Greg
------------------------------------------------------------------------
*From:* [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] *On Behalf Of
*Ryan Gahl
*Sent:* Friday, March 03, 2006 2:31 PM
*To:* rails-spinoffs@lists.rubyonrails.org
*Subject:* RE: [Rails-spinoffs] event.keyCode broken in prototype?
I’ve simplified my example. Changing “evt” to “event” makes no
difference, you can name that parameter anything you want, it’s just a
function argument variable (which is a reference to the actual event
object).
I’m using IE6. I’m implementing a textbox input masking script in a
proto OO behavior class (the script was originally non OO and required
inline event handlers).
Anyway, you can replace my inline example below with
<input type=”text” onkeypress=”showKeyPressed();” />
function showKeyPressed ()
{
alert(String.fromCharCode(event.keyCode));
}
..and get the same results.
I guess I’m at a loss. I can check to see if the shift key is down I
guess (not sure if that also covers CAPSLOCK cases)… it’s very strange
that it works fine if the event if hooked up inline, and not fine using
the DOM2 methods… sucks.
------------------------------------------------------------------------
*From:* [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] *On Behalf Of
*Gregory Hill
*Sent:* Friday, March 03, 2006 3:23 PM
*To:* rails-spinoffs@lists.rubyonrails.org
*Subject:* RE: [Rails-spinoffs] event.keyCode broken in prototype?
Just a random thought, but what if you change ‘evt’ to ‘event’. Does it
work then? What browser are you testing in, btw? My thought is based
on the fact that event is a global object in IE that gets the last event
triggered. I thought that you had to pass the object in as a parameter
in other browsers, though, so I don’t know how your inline handler would
work at all in non-IE browsers. But, I’ve been wrong many times before.
Greg
------------------------------------------------------------------------
*From:* [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] *On Behalf Of
*Ryan Gahl
*Sent:* Friday, March 03, 2006 2:16 PM
*To:* rails-spinoffs@lists.rubyonrails.org
*Subject:* RE: [Rails-spinoffs] event.keyCode broken in prototype?
<input type=”text”
onkeypress=”alert(String.fromCharCode(event.keyCode));” />
The above returns “g” when “g” is pressed and “G” when “G” is pressed.
WHILE…
<input type=”text” id=”tb” />
someClass = Class.create();
someClass.prototype =
{
initialize: function()
{
Event.observe($(“tb”), “keypress”,
this.showkeyPressed.bindAsEventListener(this) );
},
showKeyPressed: function(evt)
{
alert(String.fromCharCode(evt.keyCode));
}
};
…returns “G” all the time when the g key I pressed, no matter what.
(Simplified example of course)
For some weird reason, the event object from proto’s bindAsEventListener
method is always returning the capitalized keyCode of the key that was
pressed.
------------------------------------------------------------------------
*From:* [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] *On Behalf Of
*Gregory Hill
*Sent:* Friday, March 03, 2006 3:07 PM
*To:* rails-spinoffs@lists.rubyonrails.org
*Subject:* RE: [Rails-spinoffs] event.keyCode broken in prototype?
Code? Can’t help much without seeing what you’re doing.
------------------------------------------------------------------------
*From:* [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] *On Behalf Of
*Ryan Gahl
*Sent:* Friday, March 03, 2006 1:48 PM
*To:* rails-spinoffs@lists.rubyonrails.org
*Subject:* [Rails-spinoffs] event.keyCode broken in prototype?
I ran 2 tests. One using proto’s Event.observe, and another using an
in-line handler of the “keydown” event in a textbox.
Using .bindAsEventListener, the event.keyCode is always returning a
capital letter, no matter what. The in-line event handler returns
lowercase vs. uppercase correctly… What’s going on?
I guess I find it hard to believe no one has tried capturing keyboard
events before, so I’m hoping I’m just royally screwing something up. Can
anyone help me on this?
The information transmitted in this electronic mail is intended only for
the person or entity to which it is addressed and may contain
confidential, proprietary, and/or privileged material. Any review,
retransmission, dissemination or other use of, or taking of any action
in reliance upon, this information by persons or entities other than the
intended recipient is prohibited. If you received this in error, please
contact the sender and delete the material from all computers.
------------------------------------------------------------------------
_______________________________________________
Rails-spinoffs mailing list
Rails-spinoffs@lists.rubyonrails.org
http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs