How to get enter key to trigger button click event/postback

Y

Yuval Kordov

Hi there. First post. I've been investigating a problem
for many days now and have been frustrated at every turn.

Situation: An asp.net page (C#) with two textbox
controls, each of which I'd like to tie to a different
imagebutton control (normal button controls are not an
option.) So, imagine the following controls:

txtKeyword
txtUserName
btnSearch
btnLogin

Hitting enter while in txtKeyword should fire a click
event on btnSearch. Hitting enter while in txtUserName
should fire a click event on btnLogin.

This is easy to do in Internet Explorer. But I have had
zero success getting it to work in Netscape (7) and
Safari.

I have basically created two javascript functions: one
that finds the desired button control and another that
clicks it. The code I am using follows:

Javascript:

function FindButton(controlId)
{
if (document.getElementById) {
var el1 = document.getElementById(controlId);
if (el1 != null)
{
return el1;
}
}

if (document.all)
{
var el2 = document.all[controlId];
if (el2 != null)
{
return el2;
}
}

var frm = document.forms[0];
var el3 = frm.controlId;
if (el3 != null)
{
return el3;
}

for (var i = 0; i < frm.elements.length; i++) {
if (frm.elements.name.indexOf(el3) != -1) {
return frm.elements;
}
}

return null;
}

function enterKeyTrap(e, controlId)
{
if ((e.which && e.which == 13) || (e.which && e.which
== 3) ||
(e.keyCode && e.keyCode == 13) || (e.keyCode &&
e.keyCode == 3))
{
var xcontrol = FindButton(controlId);
if (xcontrol != null)
{
if (e != null)
{
e.cancelBubble = true;
e.returnValue = false;
}

xcontrol.click();
return false;
}
}
return true;
}


Code-behind, attributes being added:

txtKeyword.Attributes.Add("OnKeyPress","return
enterKeyTrap(event,'" + btnSearch.ClientID+ "');");
txtUserName.Attributes.Add("OnKeyPress","return
enterKeyTrap(event,'" + btnLogin.ClientID+ "');");


As I said, I have searched far and wide but have not
found anything that is cross-browser that works. Netscape
and Safari always either fire the default button (the
first one that renders) or do nothing at all. I would
appreciate any help with this as it's driving me up the
wall. After developing in .net for two years, I still
find it hard to believe that there is no built-in
facility for enter key handling.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top