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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
function PressAction(){
_highlightedSuggestionIndex=-1;
var suggestionList=_completeDiv.getElementsByTagName("div");
suggestionID = _completeDivID.getElementsByTagName("div");
var suggestionLongueur=suggestionList.length;
// on stocke les valeurs précédentes
// nombre de possibilités de complétion
_completeDivRows=suggestionLongueur;
// possiblités de complétion
_completeDivDivList=suggestionList;
_completeDivIDList=suggestionID;
// si le champ est vide, on cache les propositions de complétion
if(_currentInputFieldValue==""||suggestionLongueur==0){
hideCompleteDiv()
}else{
showCompleteDiv()
}
var trouve=false;
// si on a du texte sur lequel travailler
if(_currentInputFieldValue.length>0){
var indice;
// T vaut true si on a dans la liste de suggestions un mot commencant comme l'entrée utilisateur
for(indice=0; indice<suggestionLongueur; indice++){
if(getSuggestion(suggestionList.item(indice)).toUpperCase().indexOf(_currentInputFieldValue.toUpperCase())==0) {
index = indice;
trouve=true;
break
}
}
}
// on désélectionne toutes les suggestions
for(var i=0; i<suggestionLongueur; i++) {
setStylePourElement(suggestionList.item(i),"AutoCompleteDiv");
}
// si l'entrée utilisateur (n) est le début d'une suggestion (n-1) on sélectionne cette suggestion avant de continuer
if(trouve){
_highlightedSuggestionIndex=indice;
_highlightedSuggestionDiv=suggestionList.item(_highlightedSuggestionIndex);
_highlightedSuggestionDivID=suggestionID.item(_highlightedSuggestionIndex);
}else{
_highlightedSuggestionIndex=-1;
_highlightedSuggestionDiv=null
_highlightedSuggestionDivID=null
}
var supprSelection=false;
switch(_eventKeycode){
// cursor left, cursor right, page up, page down, others??
case 8:
case 33:
case 34:
case 35:
case 35:
case 36:
case 37:
case 39:
case 45:
case 46:
// on supprime la suggestion du texte utilisateur
supprSelection=true;
break;
default:
break
}
// si on a une suggestion (n-1) sélectionnée
if(!supprSelection&&_highlightedSuggestionDiv){
setStylePourElement(_highlightedSuggestionDiv,"AutoCompleteDivAct");
var z;
var w;
if(trouve) {
z=getSuggestion(_highlightedSuggestionDiv).substr(0);
w=getSuggestion(_highlightedSuggestionDivID).substr(0);
} else {
z=_currentInputFieldValue;
}
if(z!=_inputField.value){
if(_inputField.value!=_currentInputFieldValue) {
return;
}
// si on peut créer des range dans le document
if(_inputField.createTextRange||_inputField.setSelectionRange) {
_inputField.value=z;
_inputFieldID.value=w;
}
// on sélectionne la fin de la suggestion
if(_inputField.createTextRange){
var t=_inputField.createTextRange();
t.moveStart("character",_currentInputFieldValue.length);
t.select()
}else if(_inputField.setSelectionRange){
_inputField.setSelectionRange(_currentInputFieldValue.length,_inputField.value.length)
}
}
}else{
// sinon, plus aucune suggestion de sélectionnée
_highlightedSuggestionIndex=-1;
}
} |