|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Announcements
Chapters
Services
Feature Zones
|
Note: This is an unedited contribution. If this article is inappropriate,
needs attention or copies someone else's work without reference then please
Report This Article
IntroductionWhen I was involved in one of my projects, where we used many aspx pages with
BackgroundThe principle of work for both components is similar, therefore I will
describe For correct work the list of items must be sorted in an ascending order! ImplementationThe component
The picture gives explanation for
The functionality of searching suitable item on the list is realized on JavaScript. Function function xOnFocus(elm)
{
var el = document.getElementById('div_' + elm.id);
if (!el)
{
var xdiv = document.createElement('DIV');
xdiv.id = 'div_' + elm.id;
xdiv.noWrap = true;
xdiv.style.position = 'absolute';
xdiv.ToolTipText = '';
xdiv.style.color = elm.ToolTipForeColor;
xdiv.style.width = elm.ToolTipInitialWidth;
xdiv.style.padding = elm.ToolTipPadding;
xdiv.style.display = (elm.ToolTipHide == 'false') ? 'inline' : 'none';
xdiv.style.backgroundColor = elm.ToolTipBackColor;
xdiv.style.borderColor = elm.ToolTipBorderColor;
xdiv.style.borderStyle = elm.ToolTipBorderStyle;
xdiv.style.borderWidth = elm.ToolTipBorderWidth;
xdiv.style.fontFamily = elm.ToolTipFontFamily;
xdiv.style.fontSize = elm.ToolTipFontSize;
xdiv.style.fontWeight = elm.ToolTipFontBold;
xdiv.style.zIndex = elm.ToolTipZIndex;
if (document.documentElement && document.documentElement.scrollTop)
xdiv.style.top = document.documentElement.scrollTop + elm.getBoundingClientRect().top - parseInt(elm.ToolTipOffsetTop);
else
xdiv.style.top = document.body.scrollTop + elm.getBoundingClientRect().top - parseInt(elm.ToolTipOffsetTop);
if (document.documentElement && document.documentElement.scrollLeft)
xdiv.style.left = document.documentElement.scrollLeft + elm.getBoundingClientRect().left + parseInt(elm.ToolTipOffsetLeft);
else
xdiv.style.left = document.body.scrollLeft + elm.getBoundingClientRect().left + parseInt(elm.ToolTipOffsetLeft);
elm.insertAdjacentElement('afterEnd', xdiv);
}
else
{
if (document.documentElement && document.documentElement.scrollTop)
el.style.top = document.documentElement.scrollTop + elm.getBoundingClientRect().top - parseInt(elm.ToolTipOffsetTop);
else
el.style.top = document.body.scrollTop + elm.getBoundingClientRect().top - parseInt(elm.ToolTipOffsetTop);
if (document.documentElement && document.documentElement.scrollLeft)
el.style.left = document.documentElement.scrollLeft + elm.getBoundingClientRect().left + parseInt(elm.ToolTipOffsetLeft);
else
el.style.left = document.body.scrollLeft + elm.getBoundingClientRect().left + parseInt(elm.ToolTipOffsetLeft);
if (elm.ToolTipSaveText == 'false')
{
el.innerText = '';
el.ToolTipText = '';
}
el.style.display = (elm.ToolTipHide == 'false') ? 'inline': 'none';
}
}
Function function xOnBlur(elm)
{
var el = document.getElementById('div_' + elm.id);
if (el) el.style.display = 'none';
}
Function function xOnKeyUp(key_event)
{
var lb = key_event.srcElement;
var el = document.getElementById('div_' + lb.id);
if (el)
{
if (key_event.keyCode == 8)
{
key_event.returnValue = false;
if (el.ToolTipText.length > 0) el.ToolTipText = el.ToolTipText.substr(0, el.ToolTipText.length - 1);
el.innerText = el.ToolTipText + ' ';
xFindItem(el.ToolTipText, lb);
}
if (key_event.keyCode == 27)
{
key_event.returnValue = false;
el.ToolTipText = '';
el.innerText = '';
xFindItem(el.ToolTipText, lb);
}
if (key_event.keyCode == 13)
{
key_event.returnValue = true;
if (lb.AutoPostBack == 'true') lb.onchange();
}
}
}
Function function xOnKeyPress(key_event)
{
var lb = key_event.srcElement;
var el = document.getElementById('div_' + lb.id);
if (el)
{
if (key_event.keyCode != 13)
{
el.ToolTipText = el.ToolTipText + String.fromCharCode(key_event.keyCode);
el.innerText = el.ToolTipText +' ';
xFindItem(el.ToolTipText, lb);
}
key_event.returnValue = false;
}
}
Function function xFindItem(s, lb)
{
s = s.toUpperCase();
var slen = s.length;
var lblen = lb.length;
var lbo = lb.options;
if (slen == 0 && lblen > 0)
{
lb.selectedIndex = 0;
return;
}
for (i = 0; i < lblen; i++)
{
if (lbo[i].text.toUpperCase().substr(0, slen) == s)
{
lb.selectedIndex = i;
break;
}
}
}
Components were tested in Internet Explorer version 6.0. Using the code- just like any other web server control. ExamplesThere are three pages included in demo project: History
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||