2010-11-09 6 views
0

J'ai besoin d'un moyen efficace pour afficher les erreurs que j'ai collectées depuis une fonction de sous-formulaire. Voici mon erreur fonction de collecte:Affichage de l'erreur Live JavaScript?

function checkForm(form) { 

var errors = ""; 

errors += checkName(form, form.name.value); 

errors += checkSex(form, form.sex.value); 

if(form.gender[0].checked || form.gender[1].checked) { 
     errors += checkGender(form, true); 
} else { 
    errors += checkGender(form, false); 
} 

errors += checkHeight(form, form.height.value); 

errors += checkSalary(form, form.salary.value); 

errors += checkCountry(form, form.birthCountry.value); 

if(errors) { 
     document.getElementById("errors").appendChild(document.createTextNode(errors)); 
    return false; 
} 

return true; 

} 

Malheureusement, il semble que createTextNode() ne traite pas de nouvelles lignes (\ n) ou HTML. Comment puis-je surmonter cela? Ou existe-t-il d'autres alternatives, des solutions plus efficaces?

Répondre

1

En HTML, les retours à la ligne et les espaces blancs en général sont ignorés. Pour forcer un saut de ligne, vous devez utiliser la balise br. Vous pouvez facilement exécuter un remplacement sur la chaîne d'erreurs, ou simplement faire en sorte que les fonctions ajoutent ces balises au lieu d'une nouvelle ligne.

errors.replace('\n', '<br />') 

Vous pouvez alors ajouter simplement que pour innerHTML de l'élément:

document.getElementById('errors').innerHTML += errors.replace('\n', '<br />'); 
+0

Toujours pas de dés. Seul un espace est enregistré et affiché. – NateTheGreatt

+0

Oh, stupide moi, bien sûr, un nœud de texte est un nœud de texte et ne pas analyser html. Si vous souhaitez utiliser html, vous devez définir 'innerHTML' du noeud dans le code. Sinon, vous devrez créer un nouvel élément 'br' entre chaque noeud de texte contenant une seule ligne. – poke

+0

Ah! Ça a marché. Je vous remercie! – NateTheGreatt