campo con autocompletamento a formato multiplo (nomi/date)

MarcoGrazia

Utente Attivo
15 Dic 2009
808
16
18
59
Udine
www.stilisticamente.com
Ciao ragazzi mi servirebbe il vostro aiuto per un'applicazione che sto creando.
Ho un database contenente dei dati, su questo devo poter cercare dei dati o per nome o per data, farlo non è certo difficile, il problema sta a monte della ricerca, ovvero l'interfaccia utente che deve essere più semplice possibile. ( a prova di utonto :D )
in pratica il "box" di ricerca è molto semplificato e consiste di una select, di un campo di testo e di un bottone di invio.
  • la select contiene due opzioni: ricerca per nome, ricerca per data;
  • il campo di testo permette una o l'altra ricerca;
  • il tasto di invio... be è ovvio :D
Ora al campo di testo è associato l'autocompletamento, scrivendo almeno 3 caratteri si attiva e fornisce un suggerimento su quanto già digitato, come avviene normalmente avviene per tutti questi sistemi.
Funziona perfettamente per la ricerca sui nomi in quanto richiama proprio quel tipo di ricerca.
Ora vorrei implementare anche la ricerca per date ma senza fare strane cose o doppioni delle funzioni già esistenti.
Il codice attuale, semplificando è questo:
HTML:
.....
<select id="tipoRicerca">
  <option value="0" selected>Per nome ( predefinito)</option>
  <option value="1">Per data</option>
</select>
<input type="text" id="testoRicerca" value="">
....
javascript/jquery
Codice:
var tipoRicerca = 0;  // Valore predefinito
$('#tipoRicerca').on('change', function()
{
                   tipoRicerca = $(this).val();
});
$( 'input[name="testoRicerca"]' ).autocomplete({
                    source: 'suggestionRettifiche.get.php?id=' + tipoRicerca,
                    minLength: 3,
                    autoFill: true,
                    max:50,
                    formatItem: function ( row ) {    return row[0] + " (" + row[2] + ", " + row[1] + ")" + " "+row[5];    },
                    formatMatch: function ( row ) {    return row[0];    },
                    formatResult: function ( row ) {    return row[0];    }
});
Ora, a prescindere che il passaggio di ID sul "source" è stata una mia idea avvallata da qualche ricerca sul web, la cosa non funziona.
Ovviamente quel parametro ID serve al file remoto per fare una scelta sul tipo di ricerca ( a seconda del suo valore, passa al motore del database una stringa SQL o un'altra.
Il problema è che non la passa proprio!
Sempre cercano nel web ho trovate altre soluzioni ma nessuna funziona, qualcuno sa aiutarmi?
Grazie.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, io passo il parametro nell'url come hai fatto tu e funziona egregiamente. Dovresti però inizializzare la fnzione autocomplete() ogni volta che modifichi la select
Codice:
$('#tipoRicerca').on('change', function () {
        tipoRicerca = $(this).val();
        $('input[name="testoRicerca"]').autocomplete({
            source: 'suggestionRettifiche.get.php?id=' + tipoRicerca,
            minLength: 3,
            autoFill: true,
            max: 50,
            formatItem: function (row) {
                return row[0] + " (" + row[2] + ", " + row[1] + ")" + " " + row[5];
            },
            formatMatch: function (row) {
                return row[0];
            },
            formatResult: function (row) {
                return row[0];
            }
        });
    });
ps
manca il name all'input
 

MarcoGrazia

Utente Attivo
15 Dic 2009
808
16
18
59
Udine
www.stilisticamente.com
Tranquillo c'è nella versione orginale, e non funziona lo stesso e non credo sia significativo per il funzionamento dell'autocomplete.
Comunque il problema non è che non funziona l'autocomplete, infatti funziona benissimo per la parte predefnitia, ma non viene proprio passata la id nella get, che definirebbe una query alternativa a quella predefinita.
Comunque sono riuscito nell'impresa e quindi la lascio qui a furtura memoria :D
Codice:
$( 'input[name="testoRicerca"]' ).autocomplete({
                   source: function(request, response)
                   {
                       $.ajax({
                           url: 'suggestionRettifiche.get.php',
                           dataType: "json",
                           data: {
                               term : request.term,
                               id : tipoRicerca
                           },
                           success: function(data) {
                               response(data);
                           }
                       });
                   },
                   
                   minLength: 3,
                   autoFill: true,
                   max:50,
                   formatItem: function ( row ) {   return row[0] + " (" + row[2] + ", " + row[1] + ")" + " "+row[5];   },
                   formatMatch: function ( row ) {   return row[0];   },
                   formatResult: function ( row ) {   return row[0];   }
               });
id è il mio parametro di passaggio.
term è predefinito e non va modificato.
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Io avevo fatto questa prova
HTML:
<script src="/js/jquery-2.1.0.js" type="text/javascript"></script>
<script src="/js/jquery-ui.js" type="text/javascript"></script>
<script src="/js/jquery.ui.autocomplete.html.js" type="text/javascript"></script>
<select id="tipoRicerca">
    <option value="0" selected>Per nome ( predefinito)</option>
    <option value="1">Per data</option>
</select>
<input type="text" name="testoRicerca" id="testoRicerca" value="">
<script>

    $('#tipoRicerca').on('change', function () {
        autocomplete($(this).val());
    });
    autocomplete(0)
    function autocomplete(tipoRicerca) {
        $('input[name="testoRicerca"]').autocomplete({
            source: 'suggestionRettifiche.get.php?id=' + tipoRicerca,
            minLength: 3,
            autoFill: true,
            max: 50,
            formatItem: function (row) {
                return row[0] + " (" + row[2] + ", " + row[1] + ")" + " " + row[5];
            },
            formatMatch: function (row) {
                return row[0];
            },
            formatResult: function (row) {
                return row[0];
            }
        });
    }
</script>
nel php mi sono limitato a riportare il parametro ricevuto
PHP:
<?php
$a["value"] = $_REQUEST['id'];
echo json_encode($a);
come puoi vedere dall'esempio che ti ho linkato passa correttamente il parametro "id".
 
Discussioni simili
Autore Titolo Forum Risposte Data
A pulsante di update campo mysql con javascript Javascript 2
G Campo HTML input file con jQuery jQuery 0
D [MS Access] problemi con inserimento campo in una maschera MS Access 6
R [MS Access] CAMPO CALCOLATO CON FUNZIONE DSUM MS Access 19
M [PHP] Controllo campo cap con trattino oltre ai numeri PHP 3
F [MySQL] Select con due condizioni su uno stesso campo MySQL 7
G [ACCESS2007]: contare li ultimi record con lo stesso valore in un campo, finchè il valore non cambia MS Access 2
B [MySQL] CAMPO CON SIGLA INZIALE CHE SI AUTOINCREMENTA MySQL 1
P Query con Somma di un Campo , aggregazione e join Database 3
B DB Access 2007 - formato campo con valore si/no Database 0
M Numerare automaticamente campo numerico con più parametri PHP 4
A Problema con "explode" su campo date PHP 9
E Campo con record automatico MS Access 0
C Query con campo a valori multipli MS Access 0
P Cambiare il valore di un campo tabella con un pulsante cliccabile PHP 2
M Alert con campo php PHP 8
M Campo Select con dati da DB PHP 1
T selezionare un campo da un db con radio button PHP 0
L problema creazione query con campo float PHP 2
L come passare il campo allegato dal file html al fiel php per spedirlo con un form PHP 12
G Tabella con campo a scelta multipla (dropbox) MS Access 1
K [risolto] Campo con doppio ordimanento MySQL 6
S campo con dati di un altro campo PHP 9
G modificare il campo blob con il campo text PHP 0
P Campo testo con input pre-formattato HTML e CSS 2
P IF con un campo del database PHP 13
L Inserire campo input dinamico con contatore in jquery jQuery 8
I Riga tabella HTML creata con cicli PHP e Query Sql che restituisca un campo se si clicca la Riga PHP 4
R Query con campo fisso MySQL 1
asevenx unificare tabelle con campo uguale phpBB 4
K form con campo specifico obbligatorio PHP 24
K Valorizzazione condizionale campo con SQL Management Studio 2005 Database 0
M processare un form con campo testo e radio button PHP 4
M campo ordine da modificare con form PHP 2
D Modulo ricerca in ASP con campo modulo predefinito a tendina Classic ASP 8
emanuelevt campo password con scritta Javascript 22
S problema con visualizzazione campo in una tabella PHP 12
M Interazione tra un più campi di un form con un solo campo di database - query mysql PHP 2
P campo file con record db PHP 0
H problemi con campo clob PHP 1
S Usare onmouseover con 'campo immagine' e non al tag <img> Javascript 3
T Visualizzare campo numerico con formato € Classic ASP 2
N Campo Text con nome variabile Javascript 0
G Campo calcolato con DOM Javascript 17
R Scorrere una SELECT con un campo testo Classic ASP 6
grottafelix Campo modulo con elenco. HTML e CSS 9
D Visualizzazione pagina basata sul valore di un campo del database PHP 2
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
D riempire campo inserendo un valore in un altro campo PHP 2
S riflettere valore di campo input range in live Javascript 0

Discussioni simili