Campo autocompletante multiplo

 

In un articolo precedente abbiamo visto come andare a creare dei campi con la funzione di autocompletamento, ma cosa succede nel caso in cui all'interno dello stesso campo dobbiamo andare a posizionare diversi valori ogniuno dei quali deve essere inserito con la funzione di autocompletamento? Normalmente questo non sarebbe possibile, ma tramite una semplice modifica possiamo andare a utilizzare un elenco separato da virgole mantenendo le funzionalità di autocompletamento.

Innanzitutto andiamo a svolgere le medesime operazioni per un campo di autocompletamento standard come indicato in Realizzare un campo autocompletante. Quando andiamo a creare la funzione per la realizzazione dell'elenco, però, faremmo in modo che tutto ciò che è stato inserito prima dell'ultima virgola venga trascurato e venga no utilizzati solamente i caratteri immessi di seguito per la ricerca dei termini. il codice della funzione di autocompletamento multiplo è quello inserito di seguito (in questo caso è stato usato una selezione multipla per gli utenti disponibili):

<?php
function test_multiple_autocomplete($string_start = '') {
 
$matches = array();
 
$string  = '';
 
$alluser = '';
  if(
$string_start != '') {
   
$nomi     = explode(',', $string_start);
   
$num_user = count($nomi);
   
$string   = ltrim(rtrim($nomi[$num_user - 1]));
    for (
$i = 0; $i < $num_user - 1; $i++) {
     
$alluser .= ltrim(rtrim($nomi[$i])) . ', ';
    }
  }
  if (
$string) {
   
$result = db_query_range("SELECT name FROM {users} WHERE LOWER(name) LIKE LOWER('%s%%')", $string, 0, 10);
    while (
$user = db_fetch_object($result)) {
     
$matches[ $alluser . $user->name] = check_plain($user->name);
    }
  }
  print
drupal_to_js($matches);
  exit();
}
?>

Inizialmente si ha la fase di ricerca a cui segue poi una fase di accorpamento di tutti i termini inseriti in modo da essere reinseriti nel caso in cui si abbia la selezione dell'elemento richiesto.

Un esempio lo potete trovare qui di seguito:

<?php
function test_form() {

  $form['test']  = array(
   
'#type' => 'textfield',
   
'#title' => t('Test Multiple autocomplete'),
   
'#autocomplete_path' => 'test/multiple/autocomplete',
   
'#description' => t('Inserisci una lettera compresa tra la <strong>a</strong> e la <strong>d</strong> per vedere la funzione di autocompletamento in funzione.'),
   
'#maxlength' => 60,
   
'#weight' => -10,
  );

  return $form;
}
print
drupal_get_form('test_form');
?>

Altri contenuti che potrebbero interessarti

  • Caricamento di un form tramite ajax
    Nella creazione di form può essere necessario procede con passi successivi in una serie di scelte, questo comporta una perdita di tempo per gli utenti e quindi è molto comodo sfruttare le potenzialità offerte da ajax per effettuare questi passaggi in cascata senza dover andare a ricaricare la...
  • Drupal si occupa esclusivamente della validazione lato server delle informazioni, ma spesso è consigliabile prevedere ad una prima validazione dei dati inseriti dall'utente lato client, in modo da evitare l'invio della richiesta limitando quindi le possibilità di errore. Ovviamente la validazione...
  • Esempio di vista generata dall'integrazione del nostro modulo con views
    Alzi la mano chi non ha mai usato views. Alzi la mano che l'ha mai usato. Ok, non proprio tutti ma buona parte di voi ha alzato la mano, questo perchè è sicuramente uno strumento potentissimo per la visualizzazione delle informazioni, quindi è fondamentale (o comunque molto utile) andare ad...
  • Pagina di ricerca con filtri dinamici nelle views
    Le viste sono uno strumento estremamente potente e permettono di andare ad elaborare le informazioni creando degli elementi (pagine, blocchi, ...) di presentazione. La possibilità di usare dei filtri esposti ne fa degli strumenti adatti alla creazione di strumenti di ricerca dei contenuti. L'...

Commenti

Invia nuovo commento





  • Elementi HTML permessi: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <h2> <h3> <h4> <table> <thead> <tbody> <tr> <th> <td>
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Linee e paragrafi vanno a capo automaticamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente

Maggiori informazioni sulle opzioni di formattazione.



Condividi contenuti