Ciao a tutti,
ho questo problema.
Classico codice php per l'invio:
Qui ho il codice javascript/ AJAX: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>
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.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); } }); }
Il mio problema è questo che non riesco a risolvere.
Dovrei fare in modo che ogni volta si preme il pulsante " invia ":
Nella funzione click()Codice PHP:
<input type="submit" id="invia" name="invia" value="Invia" />
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.codice:$(document).ready(function(){ $("#invia").click(function(){
Esempio:
il code " lo scrivo per farvi capire " dovrebbe venire così: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>
Una cosa del genere Ma non so come si fa o comunque non mi funziona :|codice:$(document).ready(function(){ $("#invia"_$idmessaggio).click(function(){
Spero di essermi spiegato, il mio click su invia non passa il valore #invia ma cambia in base all'id ....
Grazie ..