Problema javascript singoli apici

sdemontis

Nuovo Utente
3 Feb 2014
3
0
0
Ciao,
ho creato un form per inviare dei dati, usando javascript e php, da un mio sito che poi mi arrivano per mail, funziona benissimo ma ho un problema quando nel messaggio inserisco una parola con apici.
qualcuno può aiutarmi? sto impazzendo da un paio di giorni...

Grazie
 
problema

Ciao, il problema è che quando invio un messaggio con virgolette singole il messaggio non viene inviato.
Ho creato un mio form, di solito uso solo il php, questa volta volevo imparare ad usare anche un po' javascript e ho trovato una funzione carina, ma:
non invia i messaggi con a capo e questo l'ho risolto,
non invia messaggi con apici singoli problema che è rimasto :S

la funzione jquery è questa:
$(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 += '<p>Un nome valido'+isr;
}
if (!mail.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
valid += '<p>Un indirizzo e-mail valido'+isr;
}
if (subject.length<1) {
valid += '<p>Un oggetto valido'+isr;
}

//Se i controlli non vengono superati, appare il messaggio di errore.
if (valid!='') {
$("#risposta").fadeIn("slow");
$("#risposta").html("<p><b>Errore:</b></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("<p>Invio del messaggio in corso..</p>");
$("#risposta").fadeIn("slow");
setTimeout("send('"+datastr+"')",2000);
}
return false;
});
});
//Creazione della funzione di invio. Si baserà sul nostro file php "mail.php".
function send(datastr){
$.ajax({
type: "POST",
url: "mail.php",
data: datastr,
cache: false,
success: function(html){
$("#risposta").fadeIn("slow");
$("#risposta").html(html);
$("#risposta").css("background-color","#e1ffc0");
setTimeout('$("#risposta").fadeOut("slow")',2000);
}
});
}
Ma non capisco quale sia il problema. :(
 
Ciao penso che il problema sia qui:
Codice:
setTimeout("send('"+datastr+"')",2000);

Praticamente hai creato una stringa con il nome della funzione xD
Quindi dovrebbe essere invece una cosa del genere:

Codice:
setTimeout(function(){send(datastr);},2000);

Dimmi se ora ti va :)

Comunque controlla nella console di javascript del browser per vedere se sono presenti errori! ;)
 

Discussioni simili