By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,629 Members | 1,703 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,629 IT Pros & Developers. It's quick & easy.

IE autocomplete and default button bind

P: n/a
bc
Hi,
Is it possible to detect if the IE autocomplete function in a current
context such as a textbox is activated (ie. dropdown with previously
entered info is visible)?

Problem:
I use a script as a basis for binding <enter> in textbox to a button,
BUT <enter> in the dropdown autocomplete generated by IE also triggers
this event.
The script is available below (in .NET context but the idea should
shine through).

Best regards
Brian Christensen
// Sets default buttons.
// Originally created by Janus Kamp Hansen - http://www.kamp-hansen.dk
// Extended by Darrell Norton -
http://dotnetjunkies.com/weblog/darrell.norton/
// Available at http://www.gotdotnet.com/Community/W...9-276f0620589d
string theImageScript = @"
<SCRIPT language=""javascript"">
<!--
function fnTrapKD(btnID, event){
btn = findObj(btnID);
if (document.all){
if (event.keyCode == 13){
event.returnValue=false;
event.cancel = true;
btn.click();
}
}
else if (document.getElementById){
if (event.which == 13){
event.returnValue=false;
event.cancel = true;
btn.focus();
btn.click();
}
}
else if(document.layers){
if(event.which == 13){
event.returnValue=false;
event.cancel = true;
btn.focus();
btn.click();
}
}
}

function findObj(n, d) {
var p,i,x;
if(!d)
d=document;
if((p=n.indexOf(""?""))>0 && parent.frames.length) {
d=parent.frames[n.substring(p+1)].document;
n=n.substring(0,p);
}
if(!(x=d[n])&&d.all)
x=d.all[n];
for (i=0;!x&&i<d.forms.length;i++)
x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=findObj(n,d.layers[i].document);
if(!x && d.getElementById)
x=d.getElementById(n);
return x;
}
// -->
</SCRIPT>";

textControl.Attributes.Add("onkeydown", "fnTrapKD('" +
defaultButton.ClientID + "',event)");
thisPage.RegisterStartupScript("ForceDefaultToScri ptImage",
theImageScript);
Jul 23 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
bc
Doesn't anybody have an idea on where to proceed? If there are
alternate groups that might be able to help me out I'd appreciate if
someone post them..

Thanks...

/brian

bc****@usa.net (bc) wrote in message news:<df*************************@posting.google.c om>...
Hi,
Is it possible to detect if the IE autocomplete function in a current
context such as a textbox is activated (ie. dropdown with previously
entered info is visible)?

Problem:
I use a script as a basis for binding <enter> in textbox to a button,
BUT <enter> in the dropdown autocomplete generated by IE also triggers
this event.
The script is available below (in .NET context but the idea should
shine through).

Best regards
Brian Christensen
// Sets default buttons.
// Originally created by Janus Kamp Hansen - http://www.kamp-hansen.dk
// Extended by Darrell Norton -
http://dotnetjunkies.com/weblog/darrell.norton/
// Available at http://www.gotdotnet.com/Community/W...9-276f0620589d
string theImageScript = @"
<SCRIPT language=""javascript"">
<!--
function fnTrapKD(btnID, event){
btn = findObj(btnID);
if (document.all){
if (event.keyCode == 13){
event.returnValue=false;
event.cancel = true;
btn.click();
}
}
else if (document.getElementById){
if (event.which == 13){
event.returnValue=false;
event.cancel = true;
btn.focus();
btn.click();
}
}
else if(document.layers){
if(event.which == 13){
event.returnValue=false;
event.cancel = true;
btn.focus();
btn.click();
}
}
}

function findObj(n, d) {
var p,i,x;
if(!d)
d=document;
if((p=n.indexOf(""?""))>0 && parent.frames.length) {
d=parent.frames[n.substring(p+1)].document;
n=n.substring(0,p);
}
if(!(x=d[n])&&d.all)
x=d.all[n];
for (i=0;!x&&i<d.forms.length;i++)
x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=findObj(n,d.layers[i].document);
if(!x && d.getElementById)
x=d.getElementById(n);
return x;
}
// -->
</SCRIPT>";

textControl.Attributes.Add("onkeydown", "fnTrapKD('" +
defaultButton.ClientID + "',event)");
thisPage.RegisterStartupScript("ForceDefaultToScri ptImage",
theImageScript);

Jul 23 '05 #2

P: n/a
If you want to turn off IE's autocomplete feature, add
autocomplete="off" attribute to the input field that you want to use.

Thanks

Anand

Jul 23 '05 #3

P: n/a
bc
Tnx for suggestion! But I don't want to hack the solution by disabling
functionality, e.g by putting autocomplete="off" on my control, but
instead detect it. Can it be done via javascript?

/bc

"c.**********@gmail.com" <c.**********@gmail.com> wrote in message news:<11**********************@f14g2000cwb.googleg roups.com>...
If you want to turn off IE's autocomplete feature, add
autocomplete="off" attribute to the input field that you want to use.

Thanks

Anand

Jul 23 '05 #4

P: n/a
The best I was able to do was detect if autocomplete was disabled.

In IE 6 at least document.getElementById('name_input').autocomplete
will return "off" if the name_input element contains
autocomplete="off".

If autocomplete isn't disabled then
document.getElementById('name_input').autocomplete just returns
undefined. Maybe you could use that as a basis of some detection code.

Note that in Firefox document.getElementById('name_input').autocomplete
always returns undefined.

Jul 23 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.