Ciao a tutti,
il titolo del post non è molto eloquente, cercherò di spiegarmi bene.
Allora ho uno script in jquery e php per la validazione ed invio di una mail tramite la compilazione di un form.
la parte php:
e la parte js:Codice PHP:<?php
$email = $_POST['email'];
$nome = $_POST['nome'];
$telefono = $_POST['telefono'];
$commento = $_POST['commento'];
$id = $_POST['id'];
$tipo = $_POST['tipo'];
$acquisto = $_POST['acquisto'];
$oggetto = "Richiesta di contatto";
$to = "prova1@prova.it";
$html = "MIME-Version: 1.0\r\n";
$html .= "Content-type: text/html; charset=iso-8859-1\r\n";
$html .= "From: <prova@prova.it>\r\n";
$message ="<html><body> Hai ricevuto una richiesta di contatto da:[b] ".$nome;
$message .="[/b]
La sua mail è :[b] ".$email;
$message .="[/b]
Il numero di telefono è :[b] ".$telefono;
$message .="[/b]
Il testo della richiesta è :
[b] ".$commento;
$message .="[b]
". $tipo ." e ".$acquisto;
$message .="[/b]
Riferimento :[b] ".$id;
$message .="[/b]
Il link all'immobile è : <a href=\"http://192.168.0.2/scheda.php?id=".$id.">[url]http://192.168.0.2/scheda.php?id=[/url]".$id;
$message .="</a></body></html>";
if($nome == "") {
echo "Inserire un nome.";
}
elseif($email == "") {
echo "Inserire un indirizzo E-mail.";
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Inserire un indirizzo E-mail valido.";
}
elseif ($telefono != "") {
if(!is_numeric($telefono)) {
echo "Il campo Telefono accetta solo numeri.";
}
}
else {
if(mail($to, $oggetto,$message, $html)){
echo "Richiesta inviata correttamente.";
}
else{
echo "Richiesta non ricevuta, prego riprovare.";
}
}
?>
Ed infine il form:codice:$(document).ready(function(){ $("#invia-contatto").click(function(){ var nome = $("#nome").val(); var email = $("#email").val(); var telefono = $("#telefono").val(); var commento = $("#commento").val(); var id = $("#id").val(); var tipo = $("#tipo").val(); var acquisto = $("#acquisto").val(); var datastr ='nome=' + nome + '&email=' + email + '&telefono=' + telefono + '&commento=' + commento + '&id=' + id + '&tipo=' + tipo + '&acquisto=' + acquisto; $("#response").css("display", "block"); $("#response").html("<img src=\"../Img/ajax-loader2.gif\">Invio in corso... "); $("#response").fadeIn("slow"); setTimeout("send('"+ datastr +"')",2000); return false; }); }); function send(datastr){ $.ajax({ type: "POST", url: "mail.php", data: datastr, cache: false, success: function(html){ $("#response").fadeIn("slow"); $("#response").html(html); setTimeout('$("#response").fadeOut("slow")',2000); setTimeout('$("#mail").fadeOut("slow")',3500); } }); }
In pratica tramite lo script javascript comando l'invio e la ricezione dei dati al file php.codice:<div id="mail"> <h2>Richiedi informazioni:</h2> <form id="formail" action="" method ="post"> <div class="slider"> <label for="nome">Nome </label> <input style="width: 323px;margin-left: 5px;color: #353535" class="validate(required)" type="text" name="Nome" id="nome" /> </div> <div class="slider"> <label for="email">E-mail </label> <input style="width: 323px;margin-left: 5px;color: #353535" class="validate(required, email)" type="text" name="E-mail" id="email" /> </div> <div class="slider"> <label for="telefono">Telefono (opzionale) </label> <input style="width: 323px;margin-left: 5px;color: #353535" type="text" name="Telefono" id="telefono" /> </div> <div class="slider"> <label for="commento">Commento (opzionale) </label> <textarea name="Commento" id="commento" rows="10" style="margin-left: 5px"></textarea> </div> <input type="hidden" id="id" value="<?php echo $array_dettagli['ID'];?>" /> <input type="hidden" id="tipo" value="<?php echo $array_dettagli['Tipo'];?>" /> <input type="hidden" id="acquisto" value="<?php echo $array_dettagli['Acquisto'];?>" /> <input type="submit" value="Invia richiesta" id="invia-contatto" name="Invia richiesta" /> </form> <div id="response"> </div> </div>
Ho creato una serie di condizioni nel file php per la validazione dei dati, so che avrei potuto farlo direttamente nel file javascript, ma voglio sperimentare.
Il problema è che, dato che alla fine del file javascript se l'operazione ha avuto successo e cioè se restituisce un messaggio, spariscono sia il messaggio che il div dove c'è il form.
Volevo creare una condizione nel file javascript che dicesse: se il messaggio ricevuto dal file php è "Richiesta ricevuta correttamente." fai sparire sia la scritta che il div, altrimenti fai sparire solo la scritta.
In "codice" una cosa del genere:
Così non funziona, ma essendo un neofita sicuramente sbaglio la sintassi, ma in giro non ho trovato alcuna info in merito.codice:if($("#response").html.is("Richiesta inviata correttamente.") { setTimeout('$("#response").fadeOut("slow")',2000); setTimeout('$("#mail").fadeOut("slow")',3500); } else { setTimeout('$("#response").fadeOut("slow")',5000); }
Potreste darmi una mano?
Grazie ciao

Rispondi quotando