1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| /*
tableau des reponses necessaires à la correspondance entre la suggestion et les données
Vous pouvez bien entendu le generer en php ou bien de facon dynamique avec ajax ;)
*/
suggests = new Array('aaaa','aaab','aabb','abbb','abbc','0000','0001','0011','0111','0112');
/*
fonction de recalcul de l'offset top et left qui se refere à l'offsetParent pour palier au probleme de positionnement dans les tableaux
*/
function positionAbsolute(obj, mode)
{
currentValue = 0;
if (obj.offsetParent)
{
if (mode == 'top')
currentValue = obj.offsetTop;
else if (mode == 'left')
currentValue = obj.offsetLeft;
while (obj = obj.offsetParent)
if (mode == 'top')
currentValue += obj.offsetTop;
else if (mode == 'left')
currentValue += obj.offsetLeft;
}
return currentValue;
}
/*
la fonction principale qui remplis le div des differentes suggestions possibles en corélation avec le champ input
*/
function showValue(inside)
{
divDest = document.getElementById('menuRightHidden');
divDest.innerHTML = '';
valueOfElement = '';
exist = 0;
nbOfElement = 0;
divDest.style.top = positionAbsolute(inside, 'top') + inside.offsetHeight;
divDest.style.left = positionAbsolute(inside, 'left');
divDest.style.width = inside.offsetWidth - 3;
for (i = 0; i < suggests.length; i++)
{
if (suggests[i].indexOf(inside.value) == 0 && inside.value != '')
{
nbOfElement++;
exist = 1;
valueOfElement = suggests[i];
currentDiv = document.createElement("div");
currentInner = document.createTextNode(suggests[i]);
currentDiv.indice = suggests[i];
currentDiv.className = 'currentDiv';
currentDiv.onclick = function()
{
inside.value = this.indice;
divDest.style.visibility = 'hidden';
}
currentDiv.appendChild(currentInner);
divDest.appendChild(currentDiv);
}
}
if (exist == 0 || (valueOfElement.length == inside.value.length && nbOfElement == 1))
divDest.style.visibility = 'hidden'
else
divDest.style.visibility = 'visible';
}
/*
intialisation de la div qui contiendra les differentes suggestions
*/
function initMenuRightDiv()
{
menuRightDiv = document.createElement("div");
menuRightDiv.className = 'hiddenDiv';
menuRightDiv.id = 'menuRightHidden';
window.document.body.appendChild(menuRightDiv);
}
window.onload = initMenuRightDiv; |
Partager