2011-11-22 6 views
5

Si prega di passare attraverso il violino di seguito. Sto cercando di ottenere gli ID dei prodotti selezionati nella casella fcbkcomplete e mostrarli come valori separati da virgola nella casella di testo con id="interest". Ho scritto una funzione per ottenerlo ma non ha funzionato. La funzione aggiunge l'id del primo valore e non prende gli id ​​degli altri valori che vengono aggiunti nella casella di selezione multipla.Come ottenere id quando un valore è selezionato in fcbkcomplete? - jsfiddle ha aggiunto

http://jsfiddle.net/balac/xDtrZ/1/

ho aggiunto json.txt. esso contiene dati come questo

[{"key":"2", "value":"Canon Powershot "},{"key":"3", "value":"Fastrack Bag"},{"key":"4", "value":"Iphone 4 "},{"key":"5", "value":"Levis Jeans"},{"key":"7", "value":"Indig"},{"key":"8", "value":"Dashing Cars"},{"key":"9", "value":"dsdas"},{"key":"10", "value":"fsfs"}] 

Nella chiave valore json sopra è l'id che voglio visualizzare nella casella di testo come valori separati da virgola. valore è il valore che verrà nel menu a discesa per la selezione.

mentre si selezionano i valori nel menu a discesa, voglio che la chiave corrispondente venga aggiunta nella casella di testo come valori separati da virgola.

Il problema è che solo la chiave del primo elemento selezionato viene aggiunta nella casella di testo, non importa.

Spero sia specifico e detto tutto in dettaglio. se qualcuno vuole qualche chiarimento, per favore chiedetemi che vi spiegherò di più

+0

Firebug ha segnalato questo errore: 'http://fiddle.jshell.net/balac/xDtrZ/1/show/parseJSON.php?tag=d 404 1.14s non trovato 'Non ho mai provato ad usare uno script php come quello in jsFiddle, ma non funziona così. –

+0

Inoltre, in' Aggiungi risorsa' puoi aggiungere URL a file javascript e CSS esterni. Così ho eliminato il codice js fcbkcomplete che era incorporato nel tuo script in una risorsa esterna per te. http://jsfiddle.net/xDtrZ/4/ –

+0

so che non possiamo aggiungere file php in questo modo ... ora ho cambiato in file txt e anche il contenuto del file txt è dato sopra –

risposta

3

Penso di aver trovato una soluzione più semplice per voi. Tenete a mente, a causa dei problemi che ho citato nei miei commenti ho dovuto semplificare drasticamente il codice fcbkcomplete per farlo funzionare ..

$(document).ready(function() { 
    $("#select3").fcbkcomplete({ 
     addontab: true, 
     maxitems: 10, 
     input_min_size: 0, 
     height: 10, 
     select_all_text: "select", 
     onselect: clicker 
    }); 
}); 

var clicker = function() { 
    var selected = new Array(); 

    $('option', this).each(function() { 
     selected.push($(this).val()); 
    }); 

    $('#interest').val(selected.join(', ')); 
}; 

See it in action here.

Nota: ho dovuto aggiungere manualmente <option>'s a l'elenco select per fare in modo che fcbkcomplete funzioni correttamente. Ma comunque, la mia logica dovrebbe funzionare per te indipendentemente.

Inoltre, fcbkcomplete modifica dinamicamente l'id <option>'s in qualcosa come opt_vaQDzJU37ArScs818rc8HUwz9gm1wypP quindi ho dovuto usare il valore invece. Ci sono soluzioni alternative per questo se sei morto impostato su utilizzando l'id invece del valore.

per illustrare il mio punto, modificare il ciclo attraverso ogni opzione in questo modo:

$('option', this).each(function() { 
    for (var i = 0; i < this.attributes.length; i++) { 
     var pair = this.attributes[i].name + ': ' 
      + this.attributes[i].value; 
     alert(pair); 
    } 
    selected.push($(this).val()); 
}); 

Vedrete come gli attributi finiscono dopo fcbkcomplete corse.

Modifica finale

Dopo la sua creazione su localhost e utilizzando un file JSON txt, sono stato in grado di replicare, infine, il problema si stavano avendo. Il fatto è che il comportamento cambia totalmente quando si utilizza JSON invece di codificare hard-<option> s. Ecco la soluzione di lavoro:

$(document).ready(function() { 
    var clicker = function(e) { 
     var selected = new Array(); 

     // using "this" here was out of context, use #select3 
     $('option', $('#select3')).each(function() { 
      selected.push(this.value); 
     }); 

     $('#interest').val(selected.join(', ')); 
    }; 

    $("#select3").fcbkcomplete({ 
     json_url: "parseJSON.txt", 
     addontab: true, 
     maxitems: 10, 
     input_min_size: 0, 
     height: 10, 
     select_all_text: "select", 
     onselect: clicker 
    }); 
}); 
+0

grazie, ma come posso avere le chiavi per essere visualizzato al posto dei valori. nel tuo violino, hai mostrato i valori aggiunti come separati da virgola e rimossi quando li rimuovo dalla lista. –

+0

Come ho dichiarato nella mia modifica, i tasti sembrano essere modificati automaticamente da fcbkcomplete .. –

+0

Scusa se ho lasciato la chat perché non ti ho visto lì e devo andare a dormire presto .. –

0

Sotto il collegamento è un esempio di ottenere il valore in fcbkcomplete su select. Lo stesso processo che puoi fare per l'identificazione. https://github.com/emposha/FCBKcomplete/issues/110 esempio come utilizzare:

 
`//auto complete jquery starts here 
    $("#box").fcbkcomplete({ 
        width: 250, 
        addontab: true,     
        maxitems: 1, 
        input_min_size: 0, 
        height: 10, 
        cache: true, 
        filter_case: true, 
        filter_hide: true, 
        filter_selected: true, 
        newel: true, 
        filter_case:false, 
        onselect: function(item) 
        { 
         getting_value_dealer(item._value, item._id); 
        } 
       }); 
    //auto complete jquery ends here 
` 
Problemi correlati