10
votes

Shift + Mouseover avec jQuery

J'essaie de détecter si la touche Maj enfoncée lorsque le curseur est déplacé sur un élément particulier. La fonction incendie, mais seulement après je clique sur un autre élément en premier. Y a-t-il un moyen de contourner cela? J'ai essayé de me contenter du document et de l'élément, et j'ai essayé de créer une fonction pseudo-clic, mais jusqu'à présent, rien n'a fonctionné.

Par exemple, le code suivant fonctionne uniquement après que je clique sur un autre élément de la page: xxx

Merci d'avance pour toute information.


2 commentaires

Comment l'action pourrait-elle s'interposer, si elle est placée sur la survolte? Il y a un problème différent avec le code (à côté de la partie postée), je soupçonne.


@Dusoft: J'ai testé dans un document totalement nouveau sans autre JavaScript / JQuery (en dehors de la source de jQuery) et un seul élément de la page avec les mêmes résultats. Merci pour la suggestion cependant.


4 Réponses :


1
votes

J'ai essayé votre code comme celui-ci et ça marche parfaitement. Vous devez "changer" puis la sourisover, cependant.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
    loadHandler = function(){
        $("#selector").mouseover(function(e){
            if(e.shiftKey) {
                alert("the shift key is pressed");
            }
        });
    }
</script>
</head>
<body onload="loadHandler();">
<div style="border:1px solid black" id="selector">

    <br/>
    <br/>

    This is a div.

    <br/>
    <br/>

<div>
</body>
</html>


1 commentaires

@Mark: Il a été appliqué à un img, mais je devais ajuster ce que je faisais. Merci pour votre réponse cependant - cela a aidé.



10
votes

Vérifiez ceci sur l'événement KeyPress: xxx pré>

puis sur la touche: p> xxx pré>

alors faites: p>

   $(document).keypress(function (e) {

      if(e.shiftKey) {
        alert("do something")
      }

   }


3 commentaires

Je ne sais pas si j'ai compris à 100% de ce que vous essayez de faire, mais je pense que l'un des deux devrait fonctionner.


@MarCgg: Merci pour la réponse. Il s'est avéré que je devais ajuster ce que je faisais un peu, mais cela a répondu à ma question initiale.


Trop compliqué. Baiser (le garder court et simple). Découvrez la réponse de Martin Schaer! :-)



8
votes

Il n'est pas nécessaire de stocker dans une variable lorsque la touche Maj enfoncée et libérée. Vous pouvez réaliser ce que vous essayez de aimer ceci:

$('#selector').mouseover(
    function(e){
        if (e.shiftKey)
        {
            console.log("the shift key is pressed");
        }
    }
);


1 commentaires

Cela devrait être la bonne réponse :-) Veuillez remplacer .Click () avec .mouseover ()



0
votes

échantillon de travail,

Mouseevent.ShiftKey, Mouseevent.ctrlkey P>

Mouseevent.ctrlkey P>

Mouseevent.ShiftKey P>

   <img onmouseover="keypress_test(event)" onmouseout="keypress_test(event)">


    function keypress_test(event) {

             // false, no press, 
             // true, pressed

              console.log(event.ctrlKey)

              console.log(event.shiftKey)
       }


0 commentaires