Combinaison de ctrl+A et la touche suppr [Résolu]

Messages postés
23
Date d'inscription
jeudi 20 mars 2014
Dernière intervention
9 février 2019
- - Dernière réponse : rasielblas
Messages postés
23
Date d'inscription
jeudi 20 mars 2014
Dernière intervention
9 février 2019
- 5 févr. 2019 à 09:05
Bonjour! j'ai un question qui semble bizharre mais vraiment j'en ai besoin. En fait j'aimerais savoir si c'est possible en javascript ou en jquery de faire une condition qui après avoir cliquer sur ctrl+A ensuite on touche sur la touche suppr. Ce que je veux c'est quelque chose du genre:


//la touche e.keycode===65 éé e.ctrlKey et la combinaison du touche ctr+A du clavier
if((e.keyCode === 65 && e.ctrlKey === true)){
//la touche e.keyCode===46) est la touche suppr du clavier
if(e.keyCode===delete){
alert("ok");
}
}

Voilà j'espère que vous avez compris mon problème et merci de votre aide! :-)
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
24534
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 février 2019
362
1
Merci
Bonjour,


var ctrlA = false;
function testKey(e) {
      var evtobj = window.event? event : e
      if(ctrlA==true && evtobj.keyCode==46){
      	alert("ok");
      }
      if (evtobj.keyCode == 65 && evtobj.ctrlKey){
        ctrlA = true;
      }else{
      	ctrlA = false;
      }   
      
}

document.onkeydown = testKey;

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 117 internautes nous ont dit merci ce mois-ci

rasielblas
Messages postés
23
Date d'inscription
jeudi 20 mars 2014
Dernière intervention
9 février 2019
-
Merci beaucoup! vous êtes vraiment un génie, ça marche! votre code dépasse tous ce que j'ai espérer cependant j'ai un autre question de la même nature. On fait mon objectif c'est qu'une fois que je clique sur ctr+A puis suppr alors seul le texte dans le div sont éffacer. donc j'ai proceder comme suit avec votre code magique :p :

var ctrlA = false;
                        function testKey(e) {
                        var evtobj = window.event? event : e
                        if(ctrlA==true && evtobj.keyCode==46){
//le $resume permet de filtrer seulement le texte dans un div 
                            var $resume = $('.selected');
                            var $content = $resume.children().detach();
                            $resume.empty().append($content);
                            
                        }
                            if (evtobj.keyCode == 65 && evtobj.ctrlKey){
                            ctrlA = true;
                            }else{
                            ctrlA = false;
                        }   
                        }
                        document.onkeydown = testKey;



Quand je fais ctrl+A puis suppr alors le texte seulement s'efface est ca marche très bien cependant quand je fais ctrl+A et que je tape tous de suite un autre touche comme par exemple z alors à chaque fois que je tape sur le la touche z alors cela efface toujours le texte et écrire z seulement! voici le nouveau code:

var ctrlA = false;
                        function testKey(e) {
                        var evtobj = window.event? event : e
//la touche evtobj.keyCode==90 correspond à la touche z du clavier,
//c'est juste un exemple mais j'aimerais avoir tous les touches du clavier à part la touche suppr
                        if(ctrlA==true && evtobj.keyCode==46 || evtobj.keyCode==90){
                            var $resume = $('.selected');
                            var $content = $resume.children().detach();
                            $resume.empty().append($content);
                            
                        }
                            if (evtobj.keyCode == 65 && evtobj.ctrlKey){
                            ctrlA = true;
                            }else{
                            ctrlA = false;
                        }   
                        }
                        document.onkeydown = testKey;



j'aimerais donc savoir s'il est possible quand on clique sur ctr+A puis un autre touche(sauf la touche suppr du clavier) alors seulement le texte s'efface et qu'on peut écrire normalement. C'est un peu compliquer à expliquer mais j'espère que vous avez compris! sinon demande moi encore :-) et encore merci! j'avance bien avec vous!!


EDIT : Correction des balises de code pour avoir la coloration syntaxique.
jordane45
Messages postés
24534
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 février 2019
362 -
var ctrlA = false;
function testKey(e) {
      var evtobj = window.event? event : e
      if(ctrlA==true){
     	if( evtobj.keyCode==46){
           alert('Suppr');
        }else{
         alert('Autre touche...' + String.fromCharCode( evtobj.keyCode));
        }
      }
      if (evtobj.keyCode == 65 && evtobj.ctrlKey){
        ctrlA = true;
      }else{
      	ctrlA = false;
      }   
      
}
rasielblas
Messages postés
23
Date d'inscription
jeudi 20 mars 2014
Dernière intervention
9 février 2019
-
Tous mes compliments! c'est exactement ce que je voulais! vraiment je ne sais pas quoi vous dire! merci beaucoup vous êtes mon héros :-):-):-) ! Je marque cet discussion comme résolu! encore merci!
Commenter la réponse de jordane45
Messages postés
23
Date d'inscription
jeudi 20 mars 2014
Dernière intervention
9 février 2019
0
Merci
Je me permet de ré ouvrir cet discussion car j'ai rencontré encore un autre problème. En fait avec la touche ctrl+a ca marche bien, et même chose pour la touche ctrl+autre touche mais avec la touche shift + touche bas qui permet de sélectionner les textes, alors ça ne marche pas car cela sélectionne tous les éléments et non seulement les textes. Et quand j'ai appliquer la même principe de votre code du ctrl+A sur le shift+touche bas alors à chaque fois que je sélectionne le texte avec shift+touche bas et que j’appuie sur le touche suppr alors tous les textes s'efface alors que normalement seul le texte sélectionné seul devrait-être supprimé mais le texte non sélectionné doit reste intacte! , voici mon nouveau code:

 var ctrlA = false;
                    var textentier = $(".selected").text();
                            function testKey(e) {
                                
                            var evtobj = window.event? event : e
                            if(ctrlA==true){
                            if((evtobj.keyCode==46)){
                               
                                var $resume = $('.selected');
                                var $content = $resume.children().detach();
                                $resume.empty().append($content);
                            }else{
                              //alert(String.fromCharCode( evtobj.keyCode));
                            var $resume = $('.selected');
                            var $content = $resume.children().detach();
                            $resume.empty().append($content);
                            }
                            }
                            //le code evtobj.keyCode == 40 && evtobj.shiftKey) correspond au touche shift+ touche bas du clavier
                            if ((evtobj.keyCode == 65 && evtobj.ctrlKey) || (evtobj.keyCode == 40 && evtobj.shiftKey)){
                            ctrlA = true;
                            }else{
                            ctrlA = false;
                            }   

                    }
                        document.onkeydown = testKey;

EDIT : Correction des balises de code pour avoir la coloration syntaxique..... encore....!!

et voici quelque capture d'écran qui peut-être vous éclaircir à savoir mon problème :-) :


Ce texte est sélectionner par le combinaison du touche shift+touche bas du clavier et quand je clique sur suppr alors cela effacera tous les textes et non seulement les textes sélectionner, encore merci d'avance :-)
jordane45
Messages postés
24534
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 février 2019
362 -
Sans voir le code HTML qui va avec ton JS .. difficile de te répondre.
Mais il semble que tu veuilles supprimer un "range"
Un truc du genre
 if (window.getSelection) {
      if (window.getSelection().empty) {  // Chrome
        window.getSelection().empty();
      } else if (window.getSelection().removeAllRanges) {  // Firefox
        window.getSelection().removeAllRanges();
      }
    } else if (document.selection) {  // IE?
      document.selection.empty();
    }
jordane45
Messages postés
24534
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 février 2019
362 -
Au passage... lorsque tu postes du code sur le forum.. merci de le faire AVEC la coloration syntaxique.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

.
Commenter la réponse de rasielblas
Messages postés
23
Date d'inscription
jeudi 20 mars 2014
Dernière intervention
9 février 2019
0
Merci
Oui en effet, c'est bien quelque chose de ce genre que je voulais sauf que je ne sais pas comment le combiner avec le code que vous m'avez donnée. Voici mon code html
<div id="38" class="draggable ui-draggable ui-draggable-handle ui-resizable" data-text="Votre texte ici" style="color: black; z-index: 100; margin: 0px; padding: 5px 5px 5px 10px; position: absolute; top: 119px; left: 100px; width: 150px; height: 42px; border: 3px solid black; overflow-wrap: break-word; overflow: hidden; word-break: break-all;" contenteditable="true">
     Bonjour tous le monde
         <div class="ui-resizable-handle ui-resizable-sw" style="z-index: 90;">
         </div>
         <div class="ui-resizable-handle ui-resizable-ne" style="z-index: 90;">
         </div>
         <div class="ui-resizable-handle ui-resizable-nw" style="z-index: 90;">
         </div>
</div>


Ce qui donne:


Je veux faire un petit explication qui pourrait vous aider à comprendre mon problème. Comme vous voyez sur mon code html il y a un div editable, donc le texte est donc éditable. Mais comme le voyez il n'y pas que seulement du texte dans le div mais aussi d'autre div qui contient un class "ui-resizable ui-resizable-sw"... . Est ce que je veux c'est qu'une fois que je supprime le texte alors seul le texte doit être supprimer et que les autres div reste intacte.

Avec le code que vous m'avez envoyé, alors j'ai réussi à supprimer le texte seulement avec le ctrl+A + suppr et aussi pour le ctr+A + autre touche. Voici le code:

var ctrlA = false;
                    var selectedText = "";
                    //var textentier = $(".selected").text();
                            function testKey(e) {
                                
                            var evtobj = window.event? event : e
                            if(ctrlA==true){
                            if((evtobj.keyCode==46)){
                               
                                var $resume = $('.selected');
                                var $content = $resume.children().detach();
                                $resume.empty().append($content);
                            }else{
                              //alert(String.fromCharCode( evtobj.keyCode));
                            var $resume = $('.selected');
                            var $content = $resume.children().detach();
                            $resume.empty().append($content);
                            }
                            }
                            if (evtobj.keyCode == 65 && evtobj.ctrlKey){
                            ctrlA = true;
                            }
                            else{
                                ctrlA = false;
                            }
                            
                    }
                        document.onkeydown = testKey;


Est j'aimerais faire la même chose lorsque je sélectionne le texte avec shift+touche bas + suppr ou touche shift+touche bas+autre touche. Le problème avec ce dernier c'est que le texte est filtré. C'est à dire qu'elle n'est pas comme la touche ctr+A qui sélectionné tous les textes mais pour la touche shift + bas il y a un partie texte qui est sélectionner et un partie qui n'est pas, est quand je sélectionne le texte avec ctrl+shift+touche cela déclenche la suppression de tous les textes avec les autres div qui doit rester intacte.

Voilà donc ce que je veux c'est quand on sélectionne le texte avec ctr+shift+suppr ou autre touche alors cela supprime seulement le texte sélectionner et que les textes non sélectionné et les autres div reste intacte.
J'aimerais donc ajouter quelque chose du genre

if (evtobj.keyCode == 65 && evtobj.ctrlKey){
	ctrlA = true;
	}
	//la touche evtobj.keyCode == 40 && evtobj.shiftKey correspond au touche shift+touche bas du clavier
else if(evtobj.keyCode == 40 && evtobj.shiftKey){
	//Résultat=capturer le texte sélectionné seulement et supprimer les textes sélectionné seulement et que les autres restes intactes
	ctrlA = true;
	}   
	else{
	ctrlA = false;
} 


Cordialement!
rasielblas
Messages postés
23
Date d'inscription
jeudi 20 mars 2014
Dernière intervention
9 février 2019
-
J'ai un peu évolué mon code on utilisant votre suggestion window.getSelection, merci beaucoup, ça marche lorsque sélectionne le texte avec la combinaison de touche shift+touche bas et lorsque je clique sur la touche suppr ca marche très bien: seul le texte sélectionné est supprimé et les textes non sélectionné et les autres div reste intacte mais pour les autres touches(MAJ+touches bas puis autres touches) je ne sais pas pourquoi mais ça ne marche pas voilà mon nouveau code:

if (evtobj.keyCode == 65 && evtobj.ctrlKey){
                                    ctrlA = true;
                                    }
                                 //la touche evtobj.keyCode == 40 && evtobj.shiftKey correspond au touche shift+touche bas du clavier 

                                 else if(evtobj.keyCode == 40 && evtobj.shiftKey || evtobj.keyCode == 46){
                                    if (window.getSelection) {  
                                    window.getSelection().getRangeAt(0).deleteContents();    
                                    }
                                    
                                 }   
                             
                                    else{
                                    ctrlA = false;
                                }
 


J'ai besoin encore de votre aide pour savoir comment insérer dans ce code tous les touches du clavier. C'est à dire que lorsque je sélectionne le texte avec shift+bas puis lorsque j'écris tous de suite alors seul le texte sélectionné change sans touché au texte non sélectionné et les autres divs.

Cordialement!
Commenter la réponse de rasielblas
Messages postés
23
Date d'inscription
jeudi 20 mars 2014
Dernière intervention
9 février 2019
0
Merci
J'ai trouvé! en fait il suffit d'insérer tous les évènements du clavier un par un. Peut-être qu'il y d'autres moyens d'éviter ça mais je vais me contenter de ce que j'ai. Voici mon code final:

if (evtobj.keyCode == 65 && evtobj.ctrlKey){
                                    ctrlA = true;
                                    }
                                 //la touche evtobj.keyCode == 40 && evtobj.shiftKey correspond au touche shift+touche bas du clavier
                                 else if(evtobj.keyCode == 40 && evtobj.shiftKey || evtobj.keyCode == 46){
                                    if (window.getSelection) {  
                                       // window.getSelection().getRangeAt(0).deleteContents();  
                                        var $resume = $('.selected');
                                        var $content = $resume.children().detach();
                                        //Show permet d'afficher les objets cachés
                                        $resume.show().append($content);
                                        ctrlA = false;
                                    }
                                 }  
                                 //Evnènement du touche shift+touche bas ou autre touches pour filtrer les textes sélectionner sans touché au autres divs
                                 else if(evtobj.keyCode == 90 
                                || evtobj.keyCode == 46|| evtobj.keyCode == 65
                                || evtobj.keyCode == 69|| evtobj.keyCode == 82|| evtobj.keyCode == 84|| evtobj.keyCode == 89
                                || evtobj.keyCode == 85|| evtobj.keyCode == 73|| evtobj.keyCode == 80|| evtobj.keyCode == 81
                                || evtobj.keyCode == 83|| evtobj.keyCode == 68|| evtobj.keyCode == 70|| evtobj.keyCode == 71
                                || evtobj.keyCode == 72|| evtobj.keyCode == 74|| evtobj.keyCode == 75|| evtobj.keyCode == 76
                                || evtobj.keyCode == 77|| evtobj.keyCode == 87|| evtobj.keyCode == 88|| evtobj.keyCode == 67
                                || evtobj.keyCode == 86|| evtobj.keyCode == 66|| evtobj.keyCode == 78|| evtobj.keyCode == 65
                                || evtobj.keyCode == 188|| evtobj.keyCode == 59|| evtobj.keyCode == 58|| evtobj.keyCode == 161
                                || evtobj.keyCode == 107|| evtobj.keyCode == 109|| evtobj.keyCode == 106|| evtobj.keyCode == 111
                                || evtobj.keyCode == 165|| evtobj.keyCode == 50|| evtobj.keyCode == 49|| evtobj.keyCode == 51
                                || evtobj.keyCode == 52|| evtobj.keyCode == 53|| evtobj.keyCode == 54|| evtobj.keyCode == 55
                                || evtobj.keyCode == 56|| evtobj.keyCode == 57|| evtobj.keyCode == 48|| evtobj.keyCode == 169
                                || evtobj.keyCode == 61|| evtobj.keyCode == 8|| evtobj.keyCode == 13|| evtobj.keyCode == 60
                                || evtobj.keyCode == 18|| evtobj.keyCode == 96|| evtobj.keyCode == 97|| evtobj.keyCode == 98
                                || evtobj.keyCode == 99|| evtobj.keyCode == 100|| evtobj.keyCode == 101|| evtobj.keyCode == 102
                                || evtobj.keyCode == 103|| evtobj.keyCode == 104|| evtobj.keyCode == 105|| evtobj.keyCode == 106
                                || evtobj.keyCode == 107|| evtobj.keyCode == 108|| evtobj.keyCode == 109|| evtobj.keyCode == 110
                                || evtobj.keyCode == 111|| evtobj.keyCode == 144)
                                {
                                    var $resume = $('.selected');
                                    var $content = $resume.children().detach();
                                    $resume.show().append($content);
                                    ctrlA = false;
                                 }
                                    else{
                                    ctrlA = false;
                                } 
                            }
                        document.onkeydown = testKey;


Je tiens encore à remercier encore Jordane pour son aide et merci à tous les équipes du site développeur du site codes sources! je marque cette discussion comme résolu! bravo et bonne continuation à tous ;-)
Commenter la réponse de rasielblas

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.