2010-10-13 6 views
0

J'utilise sIFR sur mon site et tout fonctionne comme un charme. Maintenant que je travaille sur un formulaire de contact, je voudrais utiliser sIFR pour les messages d'erreur. Par exemple, si quelqu'un oublie de remplir un champ obligatoire et appuie sur le bouton Soumettre, le message d'erreur s'affiche. Le masquage et d'affichage des errormessages se fait par Javascript comme ceci:.sIFR et Javascript; sIFR ne montrera pas

if (form.naam.value == "") { 
document.getElementById("errorNaam").style.display = 'block'; 
form.naam.focus(); 
return false ; 

} else { document.getElementById ("errorNaam") style.display = 'none'; }

Et l'extrait de code HTML:

<div id="errorNaam" class="error"><h7>the errormessage</h7></div> 

Quand je mets display: none; dans le CSS, le message ne sera évidemment pas visible. Après avoir envoyé le formulaire, le message apparaît à l'écran, mais sans utiliser sIFR. Si je supprime l'affichage: aucun; à partir du CSS, l'erreur apparaît automatiquement à l'écran, avec le sIFR.

Peut-être que sIFR ne joue pas bien avec Javascript?

+0

Pourriez-vous signaler vos résultats avec différents navigateurs. Tous les navigateurs ne gèrent pas 'display: none' de la même façon. Lorsque l'élément est réellement supprimé du DOM, votre implémentation de sIFR peut ne pas être capable de "trouver" l'élément (car elle n'existe pas) et ne peut donc pas se rendre dynamiquement après l'affichage de l'élément avec display: block –

+0

moment je travaille dans Firefox 3.6 sur OSX. Le sIFR fonctionne très bien dans IE7 et IE8 sur Windows XP et Vista. Je n'ai pas encore essayé la partie show/hide div dans d'autres navigateurs, car cette partie n'a pas encore été mise en ligne (fonctionne sur XAMPP pour le moment). Je lis quelque chose à propos de ne pas cacher les divs, mais les mettre à l'extérieur de la fenêtre en utilisant une position négative, mais je ne suis pas tout à fait sûr que c'est valide html. ça vaut le coup d'essayer je suppose. – Jeff

+0

Après quelques essais et erreurs, je pense que je l'ai fonctionné. Dans le Javascript utilisé pour cacher et montrer les divs, j'ai ajouté l'extrait de sIFR.replace que j'ai copié du sIFR-config.js. Je n'ai pas testé cela sur d'autres navigateurs, donc peut-être y aura-t-il quelques ajustements mineurs, mais peut-être que cela aidera aussi les autres. – Jeff

Répondre

0

Peut-être appeler sIFR remplacer lorsque le message d'erreur est déclenché, mais ajouter un très léger délai (comme 5/1000 de seconde)? Votre solution pourrait être la même que la mienne pour un problème que j'avais: sifr jquery slide conflict show