Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Richiamare funzione con jquery

    Salve a tutti, ho un semplice pulsante in una tabella del tipo:
    Codice PHP:
    <td align="center" valign="middle" class="ui-state-default bordi ui-corner-right">

         <input type="hidden" id="clss" name="clss" value="producer" />
    <input type="hidden" name="voto" id="voto" value="<?=$id?>" /><?=$id?><input type="submit" name="submit" id="submit" value="Vota" onclick="javascript:submitForm(<?=$id?>)" />

    </td>
    Questo pulsante richiama una funzione situata in un file .js esterno caricato nella sezione header assieme allo script jquery, ma purtroppo così non è, non riesco a richiamare questa funzione dicendomi che non esiste, posto lo scritp nel file esterno
    Codice PHP:
    // script per far scorrere la slide 
    $(document).ready(function(){  
    $(
    "#registrati").hide();
        $(
    "#panel").hide();  
        $(
    "#flip").click(function(){  
        $(
    "#panel").slideToggle("slow");  
        });  
        

    var 
    voto = $("#voto").val();
    var 
    clss = $("#clss").val();


    function 
    submitForm(voto){
    alert ("v= "+voto);

    if(
    voto ==''){
    alert("Voto Nullo, riprova");       
    }
    else{
    // Returns successful data submission message when the entered information is stored in database.
    $.post("../../../area/convalida.php",{ voto1votoclss1:clss},
                function(
    data) {
                if (
    data == 3) {
                    
    alert ("Hai già votato, puoi votare un'altra classifica o la stessa classifica la settimana prossima. voto");
                }else if (
    data == 2){
                    
    alert ("Grazie per aver votato!");
                }else if (
    data == 1){
                    $(
    '#registrati').show();
                    $(
    '#classifica').hide();
                    
    // scroll
    $('#registrati').animatescroll({padding:100});                
    //$(document.body).animate({'scrollTop':$('#registrati').offset().top}, 2000);
                
    }else {
                    
    //alert("Qualcosa è andato storto, il tuo voto non è stato registrato, ti prego di contattare l'amministratore nella voce del menu contatti");
                    
    alert(data);
                }
                });
        
        }
        return 
    false;
    };   
    //fine funzione
    }); 
    Grazie a tutti coloro che decidono di aiutarmi.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, in sostanza hai definito la funzione dentro il ready(), cioè nel relativo scope locale, questo significa che non è vista a livello globale e non può essere richiamata dall'esterno come stai cercando di fare.
    Chiaramente puoi risolvere in vari modi ma quello più rapido è spostare l'intera funzione all'esterno del ready(), in modo che sia definita nello scope globale.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Grazie per la tua risposta KillerWorm, purtroppo la chiamata Ajax la faccio tramite jquery, e in particolare, dovrei modificare la riga in cui vengono passate le variabili:
    codice:
    
    $.post("../../../area/convalida.php",{ voto1: voto, clss1:clss},
    



  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Bene comunque il problema è quello che ti ho indicato. Che tu faccia una chiamata AJAX con jQuery o senza jQuery non cambia nulla.
    Se il problema è il recupero delle variabili voto e class, perché non dichiararle direttamente dentro la funzione submitForm()?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Le variabili le recupero già nel file .js tramite questo comando:
    Codice PHP:
    var voto = $("#voto").val(); 

    Potrei però inserire per ogni tabella un form con id diverso, caratterizzato dall'id della tabella, e recuperarlo nel file .js in questo mod
    Codice PHP:
    var voto = $("#voto").val();
    var 
    clss = $("#clss").val();


    $(
    "#form"+voto).submit(function(){
    //function submitForm(voto){
    alert ("v= "+voto);

    if(
    voto ==''){
    alert("Voto Nullo, riprova");       
    }
    else{
    // Returns successful data submission message when the entered information is stored in database.
    $.post("../../../area/convalida.php",{ voto1votoclss1:clss},
                function(
    data) {
                if (
    data == 3) {
                    
    alert ("Hai già votato, puoi votare un'altra classifica o la stessa classifica la settimana prossima. voto");
                }else if (
    data == 2){
                    
    alert ("Grazie per aver votato!");
                }else if (
    data == 1){
                    $(
    '#registrati').show();
                    $(
    '#classifica').hide();
                    
    // scroll
    $('#registrati').animatescroll({padding:100});                
    //$(document.body).animate({'scrollTop':$('#registrati').offset().top}, 2000);
                
    }else {
                    
    //alert("Qualcosa è andato storto, il tuo voto non è stato registrato, ti prego di contattare l'amministratore nella voce del menu contatti");
                    
    alert(data);
                }
                });
        
        }
        return 
    false;
    });    
    //fine funzione
    }); 
    Mentre nella tabella posso aggiungere questa il forma in questo modo:
    Codice PHP:
     <td align="center" valign="middle" class="ui-state-default bordi ui-corner-right">
               <form id="form<?=$id?>" action="" method="post"><input type="hidden" name="voto" id="voto" value="<?=$titolo?>" /><input type="submit" name="submit" id="submit" value="Vota" /></form></td>
    Unico porblema che non funziona in quanto ci sono più form, e non sa quale convalidare.

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Potrei però inserire per ogni tabella un form con id diverso
    Tutti gli id all'interno della stessa pagina devono essere diversi a prescindere, su questo non si può discutere.
    Ad ogni modo non riesco a focalizzare il problema che riscontri, ma suppongo ti stia perdendo in un bicchier d'acqua.

    Le variabili le recupero già nel file .js tramite questo comando:
    Bene, quindi non dovresti avere problemi nello spostare la funzione submitForm() fuori dal ready(), no?

    Se hai più form (cosa che personalmente preferirei evitare) puoi comunque applicare uno stesso evento submit() con un unico e semplice selettore jQuery, quindi usare l'identificatore this all'interno della funzione... capisco che ti mancano delle nozioni base per cui ti rimando alla discussione a cui ho appena risposto, in cui si presentano problemi simili anche se l'argomento non è strettamente legato.. nel caso, prova a dargli uno sguardo e vedi se può darti qualche spunto e magari schiarirti qualche lacuna
    http://forum.html.it/forum/showthrea...1#post25349121

    Eventualmente continua comunque qui la tua discussione.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Sul fatto delle lacune non ti do torto, ma non sono un programmatore e ne tanto meno devo fare dei programmi per cui ci debba lucrare, sto facendo solo una classifica sul mio sito di musica, ho cercato di studiare quello che poteva essere attinente.

    Ho letto il link che mi hai postato, ma li si tratta di più select con un solo submit, io ho più pulsanti submit generati da uno script php in una tabella, e preferisco non spostare lo script dalla funzione ready(), quindi potrei inserire un numero identificativo all'interno del pulsante submit, o passare una variabile alla funzione stessa?

    Codice PHP:
    $("#form1").submit(function(){ 
    nel form ce un pulsante per ogni riga della tabella.




  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    preferisco non spostare lo script dalla funzione ready()
    Senza offesa ma credo sia solo una tua fissazione che sinceramente non capisco.
    Sai a cosa serve esattamente la funzione ready?
    Hai capito il motivo per cui ti ho indicato di spostare fuori la tua funzione?
    Ad ogni modo questo non è il problema principale.

    Ho letto il link che mi hai postato, ma li si tratta di più select con un solo submit,
    Come ti ho indicato, i contesti sono chiaramente differenti, ma quello che mi premeva farti capire sono i concetti di classe, usata come selettore al posto degli id, e dell'istruzione this. Avendo chiaro l'utilizzo di queste cose, sei a cavallo.

    quindi potrei inserire un numero identificativo all'interno del pulsante submit, o passare una variabile alla funzione stessa?
    La discussione che ti ho linkato ti mostra un esempio di come può essere applicato uno stesso gestore di evento a più elementi, usando una classe come selettore jQuery e l'identificatore this per fare riferimento all'elemento interessato in quel momento da quell'evento.

    Che poi si tratti di select, form, pulsanti o qualsiasi altra roba, il concetto non cambia.
    Questo evita di dover applicare l'evento ad ogni singolo elemento specificato con un id, come vorresti fare.

    A questo punto si evita di applicare l'evento direttamente sul tag ma il tutto puoi gestirlo attraverso jQuery... in tal caso il ready() potrebbe risultare indispensabile.
    Non ha nemmeno senso passare dei parametri alla funzione dal momento che potresti recuperarli usando opportunamente dei selettori relativi all'elemento correntemente considerato, usando il this come contesto o altri metodi parentali per risalire ad eventuali altri valori sempre inerenti quel particolare elemento (form o altro che sia).

    Credimi, sto avendo difficoltà nel cercare di spiegare concetti relativamente semplici... mi starò arrugginendo?

    Se credi possa essere utile, posso provare a postarti un esempio per darti maggiori spunti su cui ragionare.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.