11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Après un petit cafouillage, la lecture du tutoriel sur les popup, de cet article et de celui-ci j'y vois un peu plus clair, j'ai externalisé tout le javascript sauf une partie qui n'accepte de marcher que dans le XHTML.

J'avais ceci (en supprimant ce qui n'a rien a voir avec le prob)

<input id="li" type="text" onkeyup="completion(event,this);" />
 

avec la fonction completion dans un .js externe :

function completion(ev,elem) {
if (ev.keyCode != 8)
   {

        if (elem.value.length < 8 && elem.value.substr(0,1) =='h')
           elem.value='http://';
	if (elem.value.length > 6 && elem.value.length < 11 && 
		elem.value.substr(0,8) == 'http://w')
           elem.value='http://www.';
     }

}
 


J'ai utiisé une fonction car le mécanisme est utilisé à deux endroit de la page.
ça marche impeccable. Maintenant je mets tout le javascript dans un js et là ça ne marche plus.
le XHTML devient simplement

<input id="li" type="text" />
 


et dans mon .js j'ai :

window.onload = function()
{
 document.getElementById('li').onkeyup = function() {completion(window.event, this);}
}
 

On dirait que le problème vient de l'evenement : "ev has no properties" à la 1ère ligne de la fonction completion : l'evenement est vide.
event tout court, this.event n'y ont rien changé ...

Une idée ?
Modifié par ___seb (29 Jul 2005 - 13:24)
window.onload = function()
{
document.getElementById('li').onkeyup = completion;
}



Et ta fonction completion() :

function completion(evt) {
    if( !evt ) evt = window.event; // Compatibilité MS
    ...
}


Si tu fais alert(this.id); dans ta fonction, tu constateras que this référence le nœud sur lequel tu as fixé ton guetteur d’évènement.
Smiley clapclap parfait, ça marche nickel, merci beaucoup. Smiley clapclap

(c'est vraiment étrange le javascript, ou c'est moi...
Je m'imaginais qu'on aller perdre les paramètres et l'evenement avec
document.getElementById('li').onkeyup = completion;
)
Modifié par ___seb (29 Jul 2005 - 13:24)