views:

56

answers:

3

Usually, when people click on a link, I have onclick bound to it. And then return false.

When people click with "control", they expect a new page to open up. Therefore, I want to ignore the onclick AND/OR detect it. How do I do this?

+5  A: 

The event object has a "ctrlKey" boolean flag, so you can check that in your handler. It depends a little on your framework, but generally if your handler returns false then you'll have "defeated" the click.

In IE, the event object is a global (that is, a property of the "window" object). In other browsers, it's a parameter passed to the handler. A common idiom therefore is:

function clickHandler(theEvent) {
  theEvent = theEvent || window.event;
  // ...
}
Pointy
Aka first line of `onclick` function: `if (event.ctrlKey) return true;`
gnarf
A: 

You need to use the OnMouseDown event.

Paulo Santos
A: 

You may hook the OnKeyPress event and check if the control key is being pressed. If so, raise a flag that is used on the OnClick. If the flag is up, then skip all the OnClik normal code and put, on the else do what you need.

HiperiX