Ciao a tutti,
ho questo problema.
Classico codice php per l'invio:
Codice PHP:
<form id="formail" method="post" action="">
<div id="risposta">
</div>
Nome:</p>
<input type="text" id="nome" name="nome" value="" />
E-mail:</p>
<input type="text" id="email" name="email" value="" />
Oggetto:</p>
<input type="text" id="oggetto" name="ogggetto" value="" />
Messaggio:</p>
<textarea id="messaggio" name="messaggio" rows="9" cols="20"></textarea>
<input type="submit" id="invia" name="invia" value="Invia" />
</form>
Qui ho il codice javascript/ AJAX:
codice:
$(document).ready(function(){
$("#invia").click(function(){
//Recuperiamo tutte le variabili
var valid = '';
var isr = ' è richiesto.</p>';
var name = $("#nome").val();
var mail = $("#email").val();
var subject = $("#oggetto").val();
var messaggio = $("#messaggio").val();
//Eseguiamo una serie di controlli
if (name.length<1) {
valid += '
Un nome valido'+isr;
}
if (!mail.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
valid += '
Un indirizzo e-mail valido'+isr;
}
if (subject.length<1) {
valid += '
Un oggetto valido'+isr;
}
//Se i controlli non vengono superati, appare il messaggio di errore.
if (valid!='') {
$("#risposta").fadeIn("slow");
$("#risposta").html("
Errore:</p>"+valid);
$("#risposta").css("background-color","#ffc0c0");
}
//Se i controlli vengono superati, compare un messaggio di invio in corso
else {
var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&messaggio=' + encodeURIComponent(messaggio);
$("#risposta").css("display", "block");
$("#risposta").css("background-color","#FFFFA0");
$("#risposta").html("
Invio del messaggio in corso..</p>");
$("#risposta").fadeIn("slow");
setTimeout("send('"+datastr+"')",2000);
}
return false;
});
});
function send(datastr){
$.ajax({
type: "POST",
url: "email.php",
data: datastr,
cache: false,
success: function(html){
$("#risposta").fadeIn("slow");
$("#risposta").html(html);
$("#risposta").css("background-color","#e1ffc0");
setTimeout('$("#risposta").fadeOut("slow")',2000);
}
});
}
Lo script funziona bene, solo che funziona nel caso in cui nella pagine c'è solo 1 form, invece dovrei fare in modo che funzioni se ci sono altri form nella stessa pagina.
Il mio problema è questo che non riesco a risolvere.
Dovrei fare in modo che ogni volta si preme il pulsante " invia ":
Codice PHP:
<input type="submit" id="invia" name="invia" value="Invia" />
Nella funzione click()
codice:
$(document).ready(function(){
$("#invia").click(function(){
devo fare in modo che venga passato non sempre lo stesso parametro "#invia" ma deve essere dinamico perchè i miei " form " nascono in base all'ID del messaggio.
Esempio:
Codice PHP:
$idmessaggio // questo cambia per ogni form stampato sulla pagina.
<form id="formail" method="post" action="">
<div id="risposta">
</div>
Nome:</p>
<input type="text" id="nome" name="nome" value="" />
E-mail:</p>
<input type="text" id="email" name="email" value="" />
Oggetto:</p>
<input type="text" id="oggetto" name="ogggetto" value="" />
Messaggio:</p>
<textarea id="messaggio" name="messaggio" rows="9" cols="20"></textarea>
<input type="submit" id="invia_$idmessaggio" name="invia_$idmessaggio" value="Invia" />
</form>
il code " lo scrivo per farvi capire " dovrebbe venire così:
codice:
$(document).ready(function(){
$("#invia"_$idmessaggio).click(function(){
Una cosa del genere Ma non so come si fa o comunque non mi funziona :|
Spero di essermi spiegato, il mio click su invia non passa il valore #invia ma cambia in base all'id ....
Grazie ..