Posto i codici così sarà più chiaro.
Nella stessa pagina html ho tre form; io uso lo script di PHPMailer. Posto quello con meno campi, tanto il meccanismo è identico per tutti.
Lato html abbiamo:
codice:
HTML
<form class="form-inline" id="secondo_form" method="post">
<div id="errore_due" class="error-msg"></div>
<div class="form-group conf-res">
<label>Nome e Cognome</label>
<input type="text" class="form-control" id="nome_cognome_due" name="nome_cognome_due" maxlength="50" spellcheck="false" value="">
</div>
<div class="form-group iata-id">
<label >Telefono</label>
<input type="text" class="form-control iata-input" id="telefono_ass" name="telefono_ass" maxlength="20" value="">
</div>
<div class="view-res" id="invia_due">Invia</div>
<input type="checkbox" id="spunta_due" name="spunta_due" value="B">
</form>
<script src="/js/jquery.min.js"></script>
<script src="/js/jquery_mailer_due.js"></script>
HTML
Poi abbiamo il file javascript richiamato tramite il tasto invia (invia_due)
codice:
$(document).ready(function(){
$("#invia_due").click(function(){
//Recuperiamo tutte le variabili
var valid = '';
var isr = ' manca. </h10>';
var nome_cognome_due = $("#nome_cognome_due").val();
var telefono_ass = $("#telefono_ass").val();
var checkbox_due = $("#checkbox_due").val();
//Eseguiamo una serie di controlli
if (nome_cognome_due.length<1) {
valid += 'Il nominativo'+isr;
}
if (telefono_ass.length<1) {
valid += 'Il telefono'+isr;
}
if ($("#checkbox_due").is(":not(:checked)")){
valid += '<h10>La spunta sulla privacy'+isr;
}
//Se i controlli dei campi form non vengono superati, appare il messaggio di errore.
if (valid!='') {
$("#risposta_due").fadeIn("slow");
$("#risposta_due").html("<b>Errore: </b><br/>"+valid);
$("#risposta_due").css("background-color","#FFFFE5");
}
//Se i controlli vengono superati, compare un messaggio di invio in corso
else {
var datastr ='nome_cognome_due=' + nome_cognome_due + '&telefono_ass=' + telefono_ass;
$("#risposta_due").css("display", "block");
$("#risposta_due").css("background-color","#FFFFE5");
$("#risposta_due").html("<h10>Invio del messaggio in corso..</h10>");
$("#risposta_due").fadeIn("slow");
setTimeout("send('"+datastr+"')",2000);
}
return false;
});
});
//Creazione della funzione di invio. Si baserà sul nostro file php.
//var datastr ='name=' + name + '&mail=' + mail +'&messaggio=' + encodeURIComponent(messaggio);.
function send(datastr){
$.ajax({
type: "POST",
url: "invio_mail2.php",
data: datastr,
cache: false,
success: function(html){
$("#risposta_due").fadeIn("slow");
$("#risposta_due").html(html);
$("#risposta_due").css("background-color","#FFFFE5");
setTimeout('$("#risposta_due").fadeOut("slow")',2000);
}
});
}
Ed infine abbiamo il file php
codice:
<?php
header('Content-type: text/html; charset=utf8');
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8" />';
$data = date("j F Y G:i");
$tome = "xxxxxxxxxxx";
$soggetto = "Messaggio";
$nome_cognome_due = $_POST['nome_cognome_due'];
$telefono_ass = $_POST['telefono_ass'];
$ip = $_SERVER['REMOTE_ADDR'];
require("phpemail/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Host = "xxxxxxxxxxx"; // sets GMAIL as the SMTP server
$mail->Port = 587; // set the SMTP port for the GMAIL
$mail->Username = "xxxxxxxxxxx"; // SMTP username
$mail->Password = "xxxxxxxxxx"; // SMTP password
$mail->From = "xxxxxxxxxxxxx";
$mail->FromName = "xxxxxxxxxxxxx";
$mail->AddBCC("$tome");
$mail->WordWrap = 50;
$mail->IsHTML(true); // send as HTML
$mail->Subject = "Richiesta di assistenza";
$mail->Body .= "<br>";
$mail->Body .= ("<img src=/img/logo_in_nero.png>") ;
$mail->Body .= "<br>";
$mail->Body .= "<br>";
$mail->Body .= "<strong>Richiesta</strong>";
$mail->Body .= "<br>";
$mail->Body .= "<br><strong>Effettuata il:</strong> $data";
$mail->Body .= "<br>";
$mail->Body .= "<br><strong>Da parte di:</strong> $_POST[nome_cognome_due]";
$mail->Body .= "<br>";
$mail->Body .= "<br><strong>Numero di telefono:</strong> $telefono_ass";
//Se l'e-mail viene spedita correttamente, compare un messaggio di avvenuto invio
if(!$mail->Send()) {
echo 'Il messaggio NON è stato inviato!<br/>';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo '<p>Messaggio INVIATO Grazie.</p>';
}
?>
I tre form entravano in conflitto tra loro allora ho provato ad unificare i tre fogli php in uno solo come fosse un solo form ma il conflitto rimane. Eppure i tre tasti invia processano ciascuno il suo file javascript o almeno dal dom risulta ciascuno richiamare il proprio script ma poi nella fase di invio si danno fastidio l'uno con l'altro.