Richiamare funzione jquery all'invio del form php

idrev

Utente Attivo
8 Ott 2010
45
0
0
Salve, con l'aiuto di Borgo Italia sono riuscito a creare un form in php come volevo, l'inghippo sta nel fatto che quando invio il form mi ricarica la pagina quindi dovrei fare in modo che quando ricarica la pagina mi esegua una funzione che ho già creato e che uso già...in pratica invio il form, si ricarica la pagina e invece di restare su, deve andare all'ancora dove si trova il form...ma di preciso non so come inserire la funzione nel form php...qualcuno mi da un mano ?

questo il form che posto nel caso possa servire a qualcuno

PHP:
<?php 
if(isset($_POST['invia'])){//verifico che sia stato premuto il submit 
    //metto un messaggio di errore a vuoto 
    $ok_ko=""; 
    //leggo i vari input e li verifico 
    $nome=trim(strip_tags($_POST['nome']));//con stip tag tolgo i tag html 
    $cognome=trim(strip_tags($_POST['cognome'])); 
    $mittente=trim(strip_tags($_POST['mittente'])); 
    $oggetto=trim(strip_tags($_POST['oggetto'])); 
    //nel messaggio trasformo gli eventuali \n in br e non li tolgo, gli altri li elimino 
    $messaggio=trim(strip_tags(nl2br($_POST['messaggio']),"<br> <br />")); 
    $allegato_name=$_FILES['allegato']['name']; 
    //inizio i controlli 
    if($nome == ""){ 
        $ok_ko.="il nome &eacute; obbligatorio<br>"; 
    } 
    if($cognome == ""){ 
        $ok_ko.="il cognome &eacute; obbligatorio<br>"; 
    } 
    if(!filter_var($mittente, FILTER_VALIDATE_EMAIL)){ 
        $ok_ko.="l'indirizzo email &eacute; obbligatorio<br>o indirizzo non valido<br>"; 
    } 
    if($messaggio =="" || strlen($messaggio)<10){ 
        $ok_ko.="non hai scritto il messaggio<br>o troppo corto, minimo 10 caratteri<br>"; 
    } 
    $ammessi=array('doc', 'docx', 'pdf', 'txt');//puoi aggiungerne o elimininarne 
    $estensione=pathinfo($allegato_name, PATHINFO_EXTENSION);//ricavo l'estenzione del file 
    if(!in_array($estensione,$ammessi)){//verifico se l'estenzione è tra le ammesse 
        //non c'è quindi vuoto tutto 
        $allegato_name =""; 
        $allegato_si_no="non c'&eacute; allegato"; 
    }else{ 
        //e lo carico (qui se non caricato metto solamente come se fosse vuoto o errato) 
        if(move_uploaded_file($_FILES['allegato']['tmp_name'], $_FILES['allegato']['name'])){ 
            $allegato_si_no="allegato: ".basename($allegato_name); 
        }else{ 
            $allegato_name =""; 
        $allegato_si_no="non c'&eacute; allegato"; 
        } 
    }  
    //a questo punto verifico il messaggio di errore 
    //se è rimasto vuoto non sono stati fatti errori quindi posso iniziare a spedire 
    if($ok_ko==""){ 
        $destinatario="[email protected]"; //qui le tua email 
        require_once "phpmailler/class.phpmailer.php";//richiamo la classe (verifica il percorso) 
        // e comincio ad istanziarla 
        $Emailmessaggio = new PHPmailer(); 
        $Emailmessaggio->SetLanguage('it','language/'); //messo italiano, ma la scelta è vasta 
        $Emailmessaggio->IsHTML(true); // invio l'email in formato HTML 
        $Emailmessaggio->AddAddress($destinatario); 
        $Emailmessaggio->FromName= "tuo_sito";//da dove ti arriva il messaggio, cioè dal form del tuo sito 
        $Emailmessaggio->AddReplyTo($mittente,"");//a chi rispondere es. con il rispondi di outlook 
        $Emailmessaggio->Subject=$oggetto;//oggetto dell'email 
        //preparo il testo che ti verrà inviato 
        $testo="<hr>"; 
        $testo.="Nome: $nome<br>";
		$testo.="Cognome: $cognome<br>";
		$testo.="email: <a href=\"mailto:$mittente\">$mittente</a><br>";
        $testo.= "il ".date("d.m.Y H:i:s")."<hr>"; 
        $testo.="Messaggio: $messaggio<hr>Allegato: $allegato_si_no"; 
    	$Emailmessaggio->Body=$testo; 
        //preparo l'allegato se c'è o se non l'ho eliminato 
        if($allegato_name !=""){ 
            $Emailmessaggio->AddAttachment($allegato_name); 
        } 
        //ora dovrebbe essere tutto pronto per l'invio 
        if(!$Emailmessaggio->Send()){ //errore di trasmissione 
              $ok_ko="c'&eacute; stato un errore di trasmissione, riprova pi&ugrave; tardi<br>";
        }else{ //invio avvenuto 
              $ok_ko="grazie di averci contattato, sarai richiamato al pi&ugrave; presto<br>";
        } 
    } 
    //quindi mostro il messaggio di errore o di invio (a te sistemarlo graficamente) 
    echo $ok_ko;
    //e ritorno, dopo 4 secondi per dare il tempo di leggere il messaggio al form pulito 
    echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
}else{ 
?> 
<form action="<?php htmlspecialchars($_SERVER['PHP_SELF']);?>" method="POST" enctype="multipart/form-data"> 

   
    <span id="sprytextfield1">
   <input type="text" name="nome" class="nome" /> 
   <span class="textfieldRequiredMsg">È obbligatorio specificare un valore.</span></span>
   
   <span id="sprytextfield2">
    <input type="text" name="cognome"  class="cognome"/> 
   <span class="textfieldRequiredMsg">È obbligatorio specificare un valore.</span></span>
   
   <span id="sprytextfield3">
    <input type="text" name="mittente" value="" class="email"/> 
    <span class="textfieldRequiredMsg">È obbligatorio specificare un valore.</span><span class="textfieldInvalidFormatMsg">Formato non valido.</span></span>
   
   
     
   <!-- <input type="text" name="oggetto" value="" />--> 
     
     
     <span id="spryselect1">
  <select name="oggetto" id="subject" style="color:#797b6e; margin-bottom:30px; width:340px; height:30px;" tabindex="4">
    <option value="" selected="selected">Choose</option>
    <option value="Question">Question</option>
    <option value="Business">Business</option>
    <option value="Work with us">Work with us</option>
  </select>
   <span class="selectRequiredMsg"></span></span>
   
    <span id="sprytextarea1">  
    <textarea cols="40" rows="4" name="messaggio"></textarea> 
    <span class="textareaRequiredMsg">È obbligatorio specificare un valore.</span></span> 
   
  
   <input type="text" value="doc - docx - txt - pdf" id="fileName" class="file_input_textbox" readonly="readonly" style="width:225px; height:29px;"/>
 
<div class="file_input_div">
  <input type="button" value="Select files" class="file_input_button" />
  <input type="file" name="allegato" class="file_input_hidden" onchange="javascript: document.getElementById('fileName').value = this.value" />
</div>
        
  <div style="font-size:10px; margin-top:30px; margin-bottom:30px;float:left;">
  <input  class="acconsento" name="acconsento" type="checkbox" value="acconsento al trattamento dei miei dati personali" checked="checked">
  I agree to the treatment of my personal data</div>
  <div style="float:right;">
  <input type="reset" value="Reset" id="submit" tabindex="7" class="pulsanteinv">
  <input type="submit" name ="invia" value="Sign up" id="submit" tabindex="8" class="pulsanteinv"></div>
     
     
   
  
</form> 
<!--qui ci andrebbe un link per uscire dalla pagina --> 
<?php 
}


questa invece la funzione che deve fare una volta che ha inviato il form

PHP:
$('html,body,,main,header,griglia').animate({ scrollTop: $("#contact").offset().top },'slow');

Ho provato a richiamarla sul pulsante submit ma non mi funziona
 
Ultima modifica:

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao, nello script che hai postato non vedo il richiamo alla funzione JQuery nel tasto submit.
Bada bene: per implementare il framework di Javascript "JQuery" devi prima richiamare
il file del framework con estensione min possibilmente poi devi richiamare la funzione dal tasto.
Tuttavia non ho capito cosa vuoi che faccia il form al click del tasto submit.
Vuoi che resti dove si trova o vuoi che si sposti in una data posizione ?
 

idrev

Utente Attivo
8 Ott 2010
45
0
0
Ho provato sia a mettere la funzione nel php direttamente sia sul pulsante submit in modo che mi faccia determinati movimenti e azioni ma non mi funziona, non risponde al comando cosa che invece non succede per un'altro pulsante dove uso la stessa funzione e va tranquillamente.

Questa la funzione da js esterno sul pulsante submit
PHP:
$("#submit").click(
      function() {
		 $("#s1").slideUp();
		$('html,body,,main,header,griglia').animate({ scrollTop: $("#contact").offset().top },'slow');
		});

e nel messaggio precedente la mia prova ad implementarlo nel php direttamente.


In ogni caso quello che voglio ottenere è questo: Ho creato un sito in un'unica pagina dividendo le varie sezioni incolonnate e la sezione contact con il form si trova alla fine della pagina. Il problema che mi crea il form è che quando lo compilo e lo invio questo mi riporta in cima alla pagina e non mi permette di vedere i messaggi di risposta del form, se non scrollando fino alla sezione. La soluzione potrebbe essere o che non vada all'inizio ma che resti fermo li, ma sono troppo poco esperto di php per farlo solo io, oppure inserire un richiamo alla funzione jquery che mi riporta la pagina a quel form una volta che è stato inviato, ma anche in questo caso non saprei preciso dove andare ad inserire la stringa js nel php, oppure altre soluzioni da me non vagliate ancora.
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao, per risolvere il tuo problema devi utilizzare una chiamata Ajax con JQuery
e mostrare a video o un semplice alert al termine della compilazione dei campi
o una stringa dinamica all'interno di un div.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
forse puoi risolvere semplicemente con le ancore dell'HTML
HTML:
<a name="ancora"></a>
<form action="pagina.php#ancora" method="post">
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao criric, valida soluzione ( ma mostrerebbe un salto )
e dovrebbe collegare l'ancora al submit del form.
Molto più professionale richiamare Ajax con JQuery.
 

idrev

Utente Attivo
8 Ott 2010
45
0
0
Ho risolto impostando i messaggi di risposta in finestre popup...così anche se va su almeno vedo i messaggi
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Richiamare funzione Jquery dopo aggiornamento parziale di pagina tramite ajax jQuery 0
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
C richiamare una funzione in un altro script php PHP 1
gandalf1959 richiamare una funzione da un'altra funzione PHP 1
gandalf1959 richiamare una funzione: funziona solo la seconda volta... PHP 7
M [Datetimepicker]Richiamare funzione per più id uguali jQuery 4
K richiamare 2 volte stessa funzione Javascript 1
Shyson Richiamare funzione esterna jQuery 4
A richiamare funzione javascript dopo login in popup. Javascript 0
R [Vb.net] richiamare funzione javascirpt .NET Framework 0
Shyson Richiamare funzione in altre pagine PHP 14
andre9004 richiamare funzione js da php PHP 2
I richiamare funzione dal pulsante Javascript 1
I richiamare una funzione senza click Javascript 3
frankiedeguello Richiamare funzione Ajax dentro loop While PHP 0
P [checkbox e className] evitare di richiamare più volte la stessa funzione Javascript 0
G richiamare file php da funzione javascript PHP 4
A richiamare un'immagine su una nuova funzione PHP 0
F Problema richiamare funzione Javascript 0
A Richiamare una pagina php in una funzione javascript Ajax 2
A Richiamare una funzione Javascript Javascript 1
M Richiamare una singola funziona da file php PHP 2
M Richiamare funziona da file esterno jQuery 0
T [Javascript] Richiamare un file.js (iframe) in html Javascript 1
A Richiamare funzioni esterne JS da PHP PHP 9
A [Flash] richiamare JS da AS3 Flash 0
G [PHP] RICHIAMARE TABELLA I CUI VALORI SONO STAMPATI A VIDEO E MODIFICARLI PHP 6
Shyson [WordPress] Richiamare nel mio sito numero iscritti da gruppo Facebook WordPress 0
S [PHP] Aiuto! Non riesco a richiamare una variabile PHP 2
A [Javascript] richiamare lo pseudo elemento after Javascript 1
B [Javascript] Richiamare un attributo DATA Javascript 0
Z richiamare codice html in file php PHP 2
T Richiamare il click su un input type="image" alla pressione del tasto invio su una text area. PHP 0
B richiamare variabile javascript su pagina php Javascript 4
elpirata Richiamare un campo input in una form Javascript 2
G Richiamare funzioni esterne PHP 0
P 2 hosting da richiamare con dominio e sottodominio Hosting 0
scatenato richiamare id PHP 28
P Problema per richiamare una variabile... PHP 3
gandalf1959 Richiamare un javascript da php. Non funziona? PHP 2
I richiamare dati da menu a tendina mysql PHP 2
L problema nel richiamare gli id HTML e CSS 2
P come richiamare una variabile PHP 3
I richiamare dati da database in due variabili differenti PHP 2
L Non riesco a far funzionare un plugin (probabilmente ho sbagliato qualcosa nel richiamare lo script) jQuery 10
G Richiamare una classe Sviluppo app per iOS 0
M Richiamare una foto dal database PHP 3
M Richiamare una data inserita nel database tramite php. PHP 4
P creare e richiamare una stored procedure in sqlserver .NET Framework 1

Discussioni simili