Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732

    [JQuery] linkselect plug-in

    Ciao a tutti,

    ho un problemino con un plug-in JQuery.

    Nello specifico si tratta di: http://blog.pengoworks.com/index.cfm...lugin-Released

    Esso permette il completo controllo grafico di una select, emulandone il comportamento.

    In sostanza il plug-in rimpiazza la select con un elenco di link, popolando in automatico un input hidden quando una voce è selezionata.

    Questo permette agevolmente di passare in POST i dati come se fosse una normale select.

    Il problema nasce quando tento di fare un submit automatico all'onchange della select, il plug-in infatti permette si di dichiarare una funzione di callback "change" che consente di attivare azioni personalizzate proprio durante il trigger di tale evento.

    codice:
    $("#ricerca select").linkselect({				
        change: function (li, value, text){		
        	$("#ricerca").submit();
        }						
    });
    ma il problema è che il submit della form avviene PRIMA che l'input hidden venga popolato dal rispettivo valore selezionato.

    Questo rende, ovviamente, impossible riprendere i dati in POST.

    Se invece facessi il post della form con un pulsante di submit a parte nessun problema, ma non è quello di cui ho bisogno.

    Qualcuno ha mai avuto a che fare con questo plug-in? Sapreste aiutarmi in qualche modo?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non so se una modifica del genere vada a toccare altre funzionalita', probabilmente no
    in jquery.linkselect.js
    trova questo blocco di codice
    codice:
    					if( (doCallback !== false) && (($.isFunction(options.change) && (options.change.apply(self, [this, value, text, doCallback]) === false)) || ($.isFunction($select[0].onchange) && ($select[0].onchange.apply(self, [this, value, text, doCallback]) === false))) ){
    						// restore the selected classes (since we're not selecting this option)
    						$previous.addClass(options.classSelected);
    						$current.removeClass(options.classSelected)
    						return;
    					}
    rimuovilo da dove si trova e incollalo subito dopo
    codice:
    					if( disabled ) $a.parent().find("span." + options.classDisabled).html(text);
    					// trigger the change callback if it's false, stop processing
    ciao

  3. #3
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Grazie della risposta.

    Comunque ho trovato una soluzione molto più semplice:

    codice:
     
    change: function (li, value, text){		
    setTimeout(function (){ $("#ricerca").submit() }, 100);							
    }
    come suggeritomi poi anche dall'autore stesso del plug-in, è sufficiente dare un piccolo delay al submit per bypassare il problema.

    Ciao.

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    fai come preferisci
    a me suona come un piccolo errore di logica nello script originario e fossi nei tuoi panni lo sistemerei all' origine

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.