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

jQuery Discussion :

Autocomplete et Textarea


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut Autocomplete et Textarea
    Bonjour,

    J'utilise habituellement la librairie jQuery et Autocomplete. Aujourd'hui, je dois mettre en place un trucs un peu particulier. Un autocomplete selon ce qui est saisie dans un textarea.

    En gros, les utilisateurs peuvent écrire un message, et citer des utilisateurs du site. Pour se faire, ils utiliseront un arobase pour dire au code qu'on va être en présence.

    "Salut @pierre, regarde cette article"

    Et pierre qui est inscrit sur le site recevra un mail lui disant qu'il a été identifié sur un message.

    Le souci, c'est que j'arrive pas à "délimiter" le texte à chercher dans l'autocomplete.

    Voici ce que j'ai fait pour le moment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $('.autocomplete-user').bind('change keydown keyup', function() {
        var dInput = $('.autocomplete-user').val();
        var res = dInput.slice(-1);
     
        if(res == '@') {
            $(".autocomplete-user").autocomplete({
                minLength: 3,
                delay: 100,
                source: function(request, response) {
                    $.getJSON("/ajax/ajax-autocomplete-user.php", { pseudo: request.term }, response);
                }
            });
        }      
    });
    Merci de toute aide qui pourrait me débloquer.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    tu cherches la position de l’occurrence de l'@ jusqu'à l'espace qui doit suivre.

    Mais je ne suis pas sûr d'avoir capté ce que tu cherches à auto-compléter.

  3. #3
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    tu cherches la position de l’occurrence de l'@ jusqu'à l'espace qui doit suivre.
    C'est exactement là que je bloque lol

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Tu peux utiliser les regExp pour arriver à tes fins par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var message = "Ces messages s'adressent à @Claude, @Jean et @Jean-Claude.";
    var result  = message.match(/@[a-z\-]+/gi);
    console.log(result);    // >> Array [ "@Claude", "@Jean", "@Jean-Claude" ]
    // suppression de l'@
    var i, nb = result.length;
    for( i=0; i < nb; i += 1){
        result[i] = result[i].split('@').join('');
    }
    console.log(result);    // >> Array [ "Claude", "Jean", "Jean-Claude" ]

  5. #5
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    Cette façon, je l'ai fait du côté de php. Je pense qu'on s'est pas bien compris, et j'en suis désolé.

    J'essai d'être plus clair.

    Dès que je saisie un @, je dois pouvoir lancer un autocomplete avec les données que je vais saisir à la suite. Si par exemple je reprend ton exemple, au moment où je vais écrire "@Clau", je dois proposer à mes utilisateurs les pseudos contenant "clau".

    J'ai déjà fait la partie PHP avec le retour en JSON.

    Tu vois mieux l'idée ?

    Merci

  6. #6
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    J'ai continué en faisant ainsi :



    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
    	$('.autocomplete-user').bind('change keydown keyup', function() {
    		var dInput = $('.autocomplete-user').val();
    		var pseudos = dInput.match('@[a-zA-Z0-9]+');
    		if(pseudos) {
    			for (var index = 0; index < pseudos.length; index++) {
    				// console.log(pseudos[index]);
    				var pseudo = pseudos[index];
    				$(".autocomplete-user").autocomplete({
    					minLength: 3,
    					delay: 100,
    					source: function(request, response) {
    						pseudo = pseudo.replace("@", "");
    						console.log(pseudo);
    						$.getJSON("/ajax/ajax-autocomplete-user.php", { pseudo: pseudo}, function(result) {
    							var results = $.ui.autocomplete.filter(result, pseudo);
    							response(results.slice(0, 20));
    						});
    					}
    				});				
    			}
    		}
    	});
    Mais il semble prendre en compte que le premier @pseudo que je saisie et pas les autres.

Discussions similaires

  1. Textarea + Autocomplete afficher en permanence
    Par fahdo dans le forum jQuery
    Réponses: 0
    Dernier message: 04/09/2012, 01h21
  2. textarea avec autocompletion interne
    Par nsanabi dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 22/01/2009, 13h25
  3. [AJAX] Alimenter un champ textarea après autocompletion
    Par lodan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/05/2007, 11h45
  4. rediriger la sortie standard vers un textarea
    Par gromite dans le forum Composants
    Réponses: 9
    Dernier message: 10/05/2004, 11h07
  5. attribution de texte dynamique à un textarea
    Par stephane eyskens dans le forum Flash
    Réponses: 6
    Dernier message: 01/10/2003, 13h52

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