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

Signaler
Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
4 mai 2021
-
Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
4 mai 2021
-
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! :-)

4 réponses

Messages postés
32397
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
347
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;

Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
4 mai 2021

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.
Messages postés
32397
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
347
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;
      }   
      
}
Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
4 mai 2021

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!
Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
4 mai 2021

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 :-)
Messages postés
32397
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
347
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();
    }
Messages postés
32397
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
347
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

.
Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
4 mai 2021

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!
Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
4 mai 2021

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!
Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
4 mai 2021

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 ;-)