PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-09-2010 11:04:11

jojaba
Membre
Lieu : Obersoultzbach - Alsace
Inscription : 05-10-2009
Messages : 16
Site Web

Comment vérifier ce qui se trouve avant et après une sélection ?

Bonjour smile

J'utilise une version personnelle du zcode proposé par thunderSeb sur le Site du Zéro. La sélection de texte est prise en compte comme suit :

if (window.ActiveXObject) { //Pour IE
                var textRange = document.selection.createRange();            
                var currentSelection = textRange.text;
        } else { //Pour d'autres navigateurs
                var startSelection   = field.value.substring(0, field.selectionStart);
                var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
                var endSelection     = field.value.substring(field.selectionEnd);              
        }

Il faudrait que je vérifie s'il y a un espace avant et après cette sélection. J'ai vite regardé dans le tutoriel Javascript de joSé2 (toujours sur le site du Zéro) et ai trouvé des fonctions qui permettaient de repérer des caractères à l'intérieur de la sélection mais apparemment on ne peut pas rechercher hors de cette sélection (j'aurais bien utilisé la valeur -1 avec la fonction charAt() pour trouver le caractère qui précède la sélection moi tongue ).
Ma question : existe-t-il une fonction permettant de faire ça ? Sinon, un petit coup de main pour que je trouve comment faire ?

Merci d'avance. ^^


Plume CMS - Le système de gestion de contenu léger et puissant !
Localiser des extensions Mozilla sur BabelZilla
FluxBB, les forums tout en simplicité et en puissance !

Hors ligne

#2 21-09-2010 05:23:18

jojaba
Membre
Lieu : Obersoultzbach - Alsace
Inscription : 05-10-2009
Messages : 16
Site Web

Re : Comment vérifier ce qui se trouve avant et après une sélection ?

Alors, j'ai un peu progressé dans ma réflexion sur le sujet. En fait, il faudrait que je parte de la sélection faite par l'utilisateur pour l'étendre en englobant le caractère juste avant et celui juste après cette sélection. Après cela je devrais pouvoir traiter la chaîne correctement. Je pense que j'utilise mal setSelectionRange...
Voici ce que j'ai fait pour obtenir ce résultat :

 if (window.ActiveXObject) { //For IE
                var textRange = document.selection.createRange();
                if (tagType == 'smiley') { //Change the textRange to include the previous and next character of the selection
                        textRange.moveStart('character', - textRange.length);
                        textRange.moveEnd('character', 1);
                }
                var currentSelection = textRange.text;
        } else { //For other browsers
                var startSelection   = field.value.substring(0, field.selectionStart);
                var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
                var endSelection     = field.value.substring(field.selectionEnd);
                 if (tagType == 'smiley') { //Change the textRange to include the previous and next character of the selection
                        field.setSelectionRange(-1, startSelection.length + currentSelection.length +1);
                        currentSelection = field.value;
                 }
        }

Bien entendu ça ne fonctionne pas, ni pour IE, ni pour les autres navigateurs...:(


Plume CMS - Le système de gestion de contenu léger et puissant !
Localiser des extensions Mozilla sur BabelZilla
FluxBB, les forums tout en simplicité et en puissance !

Hors ligne

Pied de page des forums