IE autocomplete and default button bind

B

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/Workspaces/Workspace.aspx?id=a3b93959-9b2e-428a-99d9-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[n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=findObj(n,d.layers.document);
if(!x && d.getElementById)
x=d.getElementById(n);
return x;
}
// -->
</SCRIPT>";

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

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
 
C

c.anandkumar

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
 
B

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
 
M

Matthew Lock

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.
 

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,969
Messages
2,570,161
Members
46,710
Latest member
bernietqt

Latest Threads

Top