11480 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,

J'ai un widget autocomplete jquery ui qui fonctionne correctement, c'est à dire qu'il récupère bien une ou plusieurs values des suggestions dans le dit input autocomplete (séparée par une virgule) et push le label, ici l'ID correspondant, dans un input hidden (id également separée par des virgules.
Ci-dessous le code correspondant.

Code PHP :

echo "<form action=\"ecrire-message.php\" method=\"post\">";
          echo "<label for=\"multi_autocomplete\"> Ajouter des destinataires:</label>";
          echo "<input type='text' id='multi_autocomplete'>";
          echo "<input type='text' id='selectuser_ids'>";
echo "</form>";



    <script>
    $( function() {
     // initialisation
     $( "#multi_autocomplete" ).autocomplete({
        source: function( request, response ) {
          var searchText = extractLast(request.term);
          $.ajax({      
             url: "traitement-destinataire-ui-autocomplete.php",
             type: 'post',
             dataType: "json",
             data: {
               search: searchText
             },
             success: function( data ) {
               response( data );
             }
           });
        },
    
        select: function( event, ui ) {
            var terms = split( $('#multi_autocomplete').val() );
            terms.pop();
            terms.push( ui.item.label );
            terms.push( "" );

            $('#multi_autocomplete').val(terms.join( ", " ));
            terms = split( $('#selectuser_ids').val() );
            terms.pop();
            terms.push( ui.item.value );
            terms.push( "" );
            $('#selectuser_ids').val(terms.join( ", " ));
            return false;
         }
     });
   });
    function split( val ) {
       return val.split( /,\s*/ );
    }

    function extractLast( term ) {
       return split( term ).pop();
    }
   </script>


Ce qui donne ca pour mieux saisir :
upload/1526931734-69769-autocompl.jpg

Je n'ai pas mis le traitement Json, je ne crois pas que cela soit utile.

J'en viens à la difficulté que je rencontre.

Si l'utilisateur supprime un des noms pour finalement ne pas envoyer de message à cette personne, dans le hidden, l'ID reste en place et donc c'est le bazar pour une insertion en BDD....

Je ne sais pas vers où partir.

Faut il envisager une fonction qui nettoie tout si les keys de suppression sont utilisées ? (ca me semble violent... )

Comment dans ce cas cibler les éléments situés entre les bonnes séparations de virgule?

Quelqu'un a t il déjà rencontré ce besoin ?

Merci et bonne soirée,
Bonjour,

J'ai continué les recherches et j'en profite pour actualiser, des fois que ca fasse gagner du temps à d'autres.

Si j'ai bien saisi, une des options seraient d'utiliser les datalists pour arriver à mes fins.

Toutefois, incompatibilité avec Safari, donc en ce qui me concerne, je vais faire autrement.

Bonne journée,