IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HTML Discussion :

Conserver la couleur de selection dans un textarea, même après perte de focus


Sujet :

HTML

  1. #1
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut Conserver la couleur de selection dans un textarea, même après perte de focus
    Salut

    Je me suis fait un petit moteur de recherche pour un textarea, à l'aide de 2 boutons (suivant et précédent) je me déplace dans ce textareaen sélectionnant les mots trouvés, se qui permet de toujours visualiser le mot, je voudrais que le mot en cour de visualisation reste en vidéo inverse, cela même si je n'ai plus le focus sur le textarea.
    D'avance merci à vous de votre aide.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut
    Après de nombreuses recherches, je n'ai toujours pas de solution.
    Dans d'autres langages il est possible de signifier le maintient de la sélection (donc de la couleur vidéo inverse), apparemment pas avec l'objet textarea du HTML
    Le code ci-dessous de ma solution (foireuse) avec du JavaScript.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    <!DOCTYPE html>
    <html lang="fr"> <!-- truc10.html -->
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    		<title>voir la selection</title>
    		<style>
                            #MenuRech {
                                    height:26px;
                                    width:606px;
                                    background-color:CornflowerBlue;
                            }
                            #RecData{
                                    margin-left:3px;
                                    margin-top:2px;
                            }
                            button{padding-left:2px;padding-right:2px}
                            #cmptRech{color:white}
                            #TxtDataOms {
                                    height:180px;
                                    width:598px;
                                    resize:vertical;
                            }
                    </style>
    	</head>
    	<body>
    		<div id="MenuRech" >
    			<input type="text" id="RecData" onkeyup="ValidRech()" placeholder="2 caract. mini">
    			<button id="BtnRechDansData" onclick="RechDansData()" disabled="true">rechercher</button>
    			<button id="BtnRechDansDataPrecedant" onclick="SuivantPrecedant('P')" onmousemove="Etat(this)" disabled="true" >Précédent</button>
    			<button id="BtnRechDansDataSuivant" onclick="SuivantPrecedant('S')" onmousemove="Etat(this)" disabled="true" >Suivant</button>
    			<span id="cmptRech">0/0</span>
    		</div>
    		<textarea id="TxtDataOms" name="TxtDataOms" class="BordSimple">
    Maître Corbeau, sur un arbre perché,
    Tenait en son bec un fromage.
    Maître Renard, par l'odeur alléché,
    Lui tint à peu près ce langage :
    Et bonjour, Monsieur du Corbeau.
    Que vous êtes joli ! que vous me semblez beau !
    Sans mentir, si votre ramage
    Se rapporte à votre plumage,
    Vous êtes le Phénix des hôtes de ces bois.
    À ces mots, le Corbeau ne se sent pas de joie ;
    Et pour montrer sa belle voix,
    Il ouvre un large bec, laisse tomber sa proie.
    Le Renard s'en saisit, et dit : Mon bon Monsieur,
    Apprenez que tout flatteur
    Vit aux dépens de celui qui l'écoute.
    Cette leçon vaut bien un fromage, sans doute.
    Le Corbeau honteux et confus
    Jura, mais un peu tard, qu'on ne l'y prendrait plus.
    		</textarea>
    		<script>
                            let CmptR = 0;
                            let NumR = 0;
                            let PositionS;
                            let LgnRec = 0;
                            function ValidRech(){
                                    let RechQuoi = document.getElementById("RecData");
                                    LgnRec = RechQuoi.value.length;
                                    if (LgnRec<2) {
                                            document.getElementById("BtnRechDansData").disabled = true;
                                            document.getElementById("BtnRechDansDataPrecedant").disabled = true;
                                            document.getElementById("BtnRechDansDataSuivant").disabled = true;
                                            document.getElementById("cmptRech").textContent = "0 / 0";
                                            
                                    }else{
                                            document.getElementById("BtnRechDansData").disabled = false;
                                    }
                            }//---------------------------------------------------------
                            function RechDansData(){
                                    let RechQuoi = document.getElementById("RecData");
                                    LgnRec = RechQuoi.value.length;
                                    if (LgnRec<2){return;}
                                    
                                    let DansDocu = document.getElementById("TxtDataOms");
                                    let Compteur = document.getElementById("cmptRech");
                                    Compteur.style.display = 'none';
                                    CmptR = 0, NumR = 0, PositionS = [];
                                    let ResulT;
                                    let patterntxt = new RegExp(RechQuoi.value,"igm");
                                    while ((ResulT = patterntxt.exec(DansDocu.value)) !== null) {
                                            PositionS.push(ResulT.index);
                                    }
                                    CmptR = PositionS.length;
                                    
                                    document.getElementById("BtnRechDansDataPrecedant").disabled = true;
                                    document.getElementById("BtnRechDansDataSuivant").disabled = !(CmptR>=2);
                                    if (CmptR>=1){
                                            NumR = 1;
                                            DansDocu.selectionStart = PositionS[NumR-1];
                                            DansDocu.selectionEnd = PositionS[NumR-1] + LgnRec;
                                            DansDocu.focus();
                                    }
                                    Compteur.textContent = NumR + " / " + CmptR;
                                    Compteur.style.display = 'inline';
                            }//---------------------------------------------------------
                            function SuivantPrecedant(Action){
                                    let DansDocu = document.getElementById("TxtDataOms");
                                    Action==="S" ? ++NumR:--NumR;
                                    document.getElementById("BtnRechDansDataSuivant").disabled = (NumR===CmptR);
                                    document.getElementById("BtnRechDansDataPrecedant").disabled = (NumR===1);
                                    document.getElementById("cmptRech").textContent = NumR + " / " + CmptR;
                                    DansDocu.selectionStart = PositionS[NumR-1];
                                    DansDocu.selectionEnd = PositionS[NumR-1] + LgnRec;
                                    DansDocu.focus();
                            }//---------------------------------------------------------
                            function Etat(elem){
                                    //console.log (quel);
                                    if (elem.disabled === true){
                                            document.getElementById("TxtDataOms").focus();
                                    }
                            }
                    </script>
    	</body>
    </html>
    La fonction Etat(elem) permet plus ou moins de redonner le focus au textaera même après le passage de l'un des boutons id="BtnRechDansDataPrecedant" et/ou id="SuivantPrecedant" en disabled.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    on ne peut effectivement pas « styler » le contenu d'une <texarea>, souvent ce qui est fait est d'avoir une <div> qui reprend le formatage de celle-ci.

    Exemple :


    ou encore plus générale et plus sophistiquée :



    Le code ci-dessous de ma solution (foireuse) avec du JavaScript.
    Pourquoi foireuse si elle fonctionne ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. changer couleur du selected dans un select
    Par EIN-LESER dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 05/03/2012, 11h43
  2. SELECT dans MySQL impossible même en mode Design
    Par Rick62 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 21/04/2010, 16h14
  3. Couleur de selection dans Substance
    Par jeffciara dans le forum Graphisme
    Réponses: 1
    Dernier message: 02/03/2010, 12h05
  4. Mettre en gras la selection dans un textArea
    Par ksouna dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/11/2007, 22h13
  5. Réponses: 2
    Dernier message: 12/04/2007, 09h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo