onmouseover avec un délai d'une seconde puis 1 click

Invité
Invité n'ayant pas de compte PHPfrance

31 mars 2009, 16:05

Bonjour à tous

Voila depuis hier j'essaye de faire en sorte que lorsque la souris passe sur un bouton il y a un délai de 1 seconde et ensuite ça clique

Alors j'ai trouvé ça sur ce forum



Code : Tout sélectionner

<head> <script type='text/javascript'> var temps function waitedlongenough(){ alert ('test'); } </script> </head> <body> <div onmouseover="temps=setTimeout(function(){waitedlongenough();},1000);" onmouseout="clearTimeout(temps)"</div> </body>
quand la souris passe dessus au bout d'une seconde j'ai une boîte de message mais je voudrais que l'événement soit un clique

Merci d'avance pour vos réponses

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mars 2009, 18:24

Un clic, c'est uniquement l'action de l'utilisateur sur le bouton et rien de plus...

C'est à toi de définir ce qui se passe lorsqu'un élément est cliqué (tu peux soumettre un formulaire, le remettre à zéro, faire appel à une fonction etc.)

Sur le même principe, ton script actuel appelle la fonction waitedlongenough() une seconde après le passage de la souris, mais c'est à toi de définir ce que fait ta fonction... est-ce qu'elle soumet un formulaire, le remet à zéro, appel une fonction etc.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

31 mars 2009, 19:11

salut

Merci de me répondre,

J'ai oublié de mentionner le fait que je suis ultra novice

et que je n'ai absolument rien compris à ta réponse.

Pourrais-tu adopter un langage pour les "nuls" :oops:

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mars 2009, 21:36

erf... alors, hmm.. commençons par le commencement : quand tu dis que ca doit déclencher un clic, ça signifie quoi pour toi ? qu'est ce qui doit se passer concrètement ?

Ca doit faire le bruit du clic de la souris ? Ca doit ouvrir une nouvelle page ? ....
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

31 mars 2009, 21:39

en fait je voudrais que lorsque la souris survolle un bouton il y a un temps de une seconde et ensuite ça clique

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mars 2009, 21:50

Et ton bouton, il doit faire quoi en temps normal, quand on clique dessus ? :)

Il doit juste s'enfoncer ? ou plus si affinité ? (et quoi si affinité ? :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

31 mars 2009, 22:24

Bof c'est pas grave merci quand même

Invité
Invité n'ayant pas de compte PHPfrance

01 avr. 2009, 21:47

heum, si je peux me permettre, je crois que ce jeune padawan veut dire qu'il voudrait que son bouton passe à l'état "cliqué" après le mouseover +1 seconde...c bien ça?

Petit nouveau ! | 4 Messages

02 avr. 2009, 12:26

heum, si je peux me permettre, je crois que ce jeune padawan veut dire qu'il voudrait que son bouton passe à l'état "cliqué" après le mouseover +1 seconde...c bien ça?
salut

oui c'est exactement ça :D

ViPHP
AB
ViPHP | 5818 Messages

02 avr. 2009, 20:37

Si c'est un bouton de type submit, avec ta fonction JS tu peux affecter l'attribut disabled="disabled".
Si l'apparence ne te convient pas ou si ce n'est pas un bouton, tu peux créer l'image du bouton toi-même, et remplacer cette image par une autre (qui symbolise le bouton cliqué et que tu auras précédemment crée) toujours avec ta fonction JS.
Eventuellement, tu peux mettre ton image en background.

ViPHP
AB
ViPHP | 5818 Messages

02 avr. 2009, 20:56

Par exemple pour changer un image onmouseover après une seconde ton code pourrait ressembler à ça :

function waitedlongenough(id,source) {
document.getElementById(id).src =  source;
}


<img id="monimage" src="Images/image1.png" onmouseover="setTimeout(function(){waitedlongenough('monimage','Images/image2.png');},1000)" alt="" />
Modifié en dernier par AB le 03 avr. 2009, 00:24, modifié 1 fois.

Mammouth du PHP | 661 Messages

02 avr. 2009, 22:56

heuu ... à moins que ce soit pour agir sur un onclick ou un lien <a> non ?

dans ce cas :
function waitedlongenough(id) {
document.getElementById(id).click();
}


<a onmouseover="setTimeout(function(){waitedlongenough(this.id);},1000)" href="..." id="test">Lien</a>
 
ça devrait fonctionner non ?

@+

ViPHP
AB
ViPHP | 5818 Messages

03 avr. 2009, 00:40

heuu ... à moins que ce soit pour agir sur un onclick ou un lien <a> non ?

dans ce cas :
function waitedlongenough(id) {
document.getElementById(id).click();
}


<a onmouseover="setTimeout(function(){waitedlongenough(this.id);},1000)" href="..." id="test">Lien</a>
 
ça devrait fonctionner non ?

@+
Cela ne pourra marcher qu'avec IE car click() est spécial IE et n'a apparemment pas d'équivalent pour FF et les autres navigateurs. C'est donc à proscrire.

Par ailleurs this.id ne fonctionne pas avec cette syntaxe :wink:

Mammouth du PHP | 661 Messages

03 avr. 2009, 09:44

Oups .... !! :oops:

c'est bizard, il me semble pourtant l'avoir employé ! ... et n'utilisant pas IE, .... je pige Pas !

dans tous les cas, sans explication sur le But Ultime, comment concevoir la fonc ...

MerciBienAB

ViPHP
AB
ViPHP | 5818 Messages

03 avr. 2009, 13:26

Oups .... !! :oops:

c'est bizard, il me semble pourtant l'avoir employé ! ... et n'utilisant pas IE, .... je pige Pas !

dans tous les cas, sans explication sur le But Ultime, comment concevoir la fonc ...

MerciBienAB
La fonction click() serait dangereuse pour la sécurité, cela m'étonnait que cette fonction soit supportée par des navigateurs modernes et c'est ce qui m'a mis la puce à l'oreille. Après une rapide recherche sur le web il se dit que c'est une fonction supportée uniquement par IE et il serait logique que les nouvelles versions ne la supporte pas sans afficher un message d'alerte.