approfitto ancora della tua pazienza
per una domanda...
Al submit vorrei fare dei controlli lato client per mandare dei messaggi immediati (che poi replicherò lato server in PHP)
i controlli che vorrei fare sul testo sono questi:
- controllo che la textarea non sia vuota
- controllo dell' esistenza di un link e nel caso trasformarlo in cliccabile
- controllare se ci sono spazi e nel caso mettere il testo tra
</p>
- eliminare eventuali tag vuoti
- fare dei controlli di sicurezza (Accetto consigli)
allora io ho fatto in questo modo:
codice:
var textAreaForm = document.getElementById('textAreaForm');
if(textAreaForm.value != ''){
var testoCorretto = textAreaForm.value;
testoCorretto = htmlEntities(testoCorretto);
// devo far diventare link cliccabili tutte le url che trovo all'interno della textarea
testoCorretto = testoCorretto.replace(/(http|https|ftp|ftps):\/\/(.*?)(\s|\n|[,.?!](\s|\n)|$)/g, "<a href=\"$1://$2\" rel=\"nofollow\">$1://$2</a>$3");
//al posto degli spazi metto i paragrafi
testoCorretto = "
" + testoCorretto.replace(/\r/g, "").replace(/(?:\n *){2,}/g, "<\/p>
").replace(/\n/g, "<br \/>") + "<\/p>";
// Eliminazione di tutti i tag vuoti
var pattern= /<[^\/>]*>([\s]?)*<\/[^>]*>/;
testoCorretto = testoCorretto.replace(pattern, '');
}
else{
testoCorretto = textAreaForm;
}
document.getElementById('test').innerHTML = testoCorretto;
function htmlEntities(str) {
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
}
Allora fino al punto 4 penso di averlo fatto solo che ho un problema....
se io scrivo un link del tipo http://www.miosito.com
la funzione mi crea correttamente il link cliccabile, ma se io scrivessi un tag
http://www.miosito.com
succede una cosa stratosferica(http://www.miosito.com">http//www.miosito.com%3C/a%3E)...
come pensi che debba trattare questi controlli?
Grazie mille
PS Ho aggiunto questo alla 4 riga:
codice:
testoCorretto = testoCorretto.replace(/([<>"])/g, " $1 ");
In questo modo non mi parsa i tag ma secondo te è un modo giusto per trattare l'argomento?