2010-12-12 7 views
2

J'utilise la fonction jQuery live() pour modifier la couleur de la bordure des entrées de texte de formulaire afin de donner aux utilisateurs une meilleure indication de l'élément en cours de saisie. Il est plus facile pour moi de utilisez live() sur bind() car il existe certains cas où les nouvelles entrées de formulaire sont insérées dynamiquement dans la page. De la lecture à travers le jQuery documentation for live() Je comprends que chaque gestionnaire doit retourner false pour empêcher les autres gestionnaires d'être exécutés. Si j'interprète mal ce que cela signifie réellement, voici le code que je dois ajouter et enlever la couleur de la bordure de mes entrées de formulaire.jQuery live() ne pas afficher le curseur de texte dans Firefox

$('input.highlight').live({ 
    focus: function() { 
     $(this).parent('span').addClass('input-focus'); 
     return false; 
    }, 
    blur: function() { 
     $(this).parent('span').removeClass('input-focus'); 
     return false; 
    } 
}); 

Cela fonctionne parfaitement dans Chrome et Safari, sauf dans Firefox le curseur de texte clignotant ne semble pas à l'intérieur de l'entrée de forme lorsqu'il a le focus. Si j'enlève return false; cela se voit. Serait-ce un bug jQuery que j'ai rencontré?

+0

Son lien avec les bulles .live et le retour false bloque certains événements en amont de la chaîne – Raynos

+0

Alors, qu'est-ce que Chrome et Safari font entre moi en fixant la classe de couleur de la bordure et en retournant false ou après le retourner que Firefox n'est pas? – greenie

Répondre

1

Hey, j'ai eu le même problème. J'ai surmonté le problème en ajoutant $ (this) .focus(); avant le retour faux.

$('input.highlight').live({ 
    focus: function() { 
     $(this).parent('span').addClass('input-focus'); 
     $(this).focus(); 
     return false; 
    }, 
    blur: function() { 
     $(this).parent('span').removeClass('input-focus'); 
     return false; 
    } 
}); 

Espérons que cela aide.