gingersnapped
asked on
Javascript + Catch Keystroke on input and run function
Hey guys,
So I've been sifting through all the ways to capture a keystroke using Javascript, yet mine seems a bit more specific.
So I have a text input in one of my forms that I want to catch an "enter" keystroke. If the user presses enter on that specific input, I need javascript to then run a function called manageAccount instead.
So this would be the process:
- User presses enter on input3, which would be the onkeydown calling a keystroke function?
- the keystroke function checks to see if the keystroke is 'enter', or keystroke 13
- If it's keystroke 13, it needs to execute function manageAccount (but also needs to not submit the actual form, since enter typically submits a form)
I've been researching this and can't seem to come up with a good way to do this. Thoughts?
So I've been sifting through all the ways to capture a keystroke using Javascript, yet mine seems a bit more specific.
So I have a text input in one of my forms that I want to catch an "enter" keystroke. If the user presses enter on that specific input, I need javascript to then run a function called manageAccount instead.
So this would be the process:
- User presses enter on input3, which would be the onkeydown calling a keystroke function?
- the keystroke function checks to see if the keystroke is 'enter', or keystroke 13
- If it's keystroke 13, it needs to execute function manageAccount (but also needs to not submit the actual form, since enter typically submits a form)
I've been researching this and can't seem to come up with a good way to do this. Thoughts?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
That seemed to help a lot. I suppose the only issue with this is when you press enter, it still tries to submit the form first, it fails to submit since I didnt put a value in the input first... then it shows me the 'you've hit enter' alert and runs manageAccount.
Is there a way to stop the submit? I know return = false typically does that, not sure where that'd go in this situation.
Is there a way to stop the submit? I know return = false typically does that, not sure where that'd go in this situation.
Note that IE and FF use different event handling - FF passes the event to the event sink via the "e" variable, but IE 6 does not.
The window.event.srcElement is IE-specific. FF (and Opera and Safari) use Event.target.
The window.event.srcElement is IE-specific. FF (and Opera and Safari) use Event.target.
ASKER
Actually keeping it from submitting is simply adding a variable in my form validation. I set a variable to -1. If they click enter, that variable now becomes 1. So in the form validation it checks to see if the variable is NOT -1 (meaning they clicked enter on that one input), so it automatically fails the submit. It seems to work in both IE and FF, so that's great. Kudos to Morcalavin on the help.
Final Javascript:
idcheck = -1;
function kH(e)
{
idcheck = 1;
var key = e.charCode || e.keyCode;
if(key == 13)
{
manageAccount();
}
}
function validateForm() {
if (idcheck != -1)
{
return false;
}
......
}
ASKER
Open in new window