2009-12-18 7 views
0

Je développe une application web dans ASP.NET MVC. J'ai récemment ajouté des coins arrondis en utilisant le plugin jQuery Rounded Corners (http://plugins.jquery.com/project/corners). Cela semble avoir perturbé IE8 (mais pas 6 ou 7, ou Firefox) parce que je ne peux plus mettre le focus dans $ (document) .ready().jQuery coins arrondis + focus() dans IE8

Voici un exemple du problème:

$(document).ready(function() { 

     // using jQuery rounded corners plugin 
     $("#centre").corners(); 

     // this doesn't have any effect in IE8 
     $("#emailAddress").focus(); 
    }); 

où #centre contient notre page de connexion, et #emailAddress est le premier champ à l'intérieur.

Le champ emailAddress doit obtenir le focus d'entrée. Il le fait dans IE6 & 7 et Firefox, mais pas dans IE8. Si vous commentez les deux lignes de coins arrondis, alors cela fonctionne.

J'ai aussi essayé de déplacer la ligne de mise au point à $ (fenêtre) .load():

$(window).load(function() { 
     $("#emailAddress").focus(); 
    }); 

Cela ne fonctionne pas non plus. Toutefois, si j'écris mis l'accent à l'aide d'un délai d'attente, il fonctionne:

$(document).ready(function() { 

     // using jQuery rounded corners plugin 
     $("#centre").corners(); 

     // this doesn't have any effect in IE8 
     setTimeout(function() { $("#emailAddress").focus(); }, 100); 
    }); 

Je ne sais pas pourquoi la mise en focus après un délai d'attente devrait fonctionner. Serait-ce parce que les opérations de coins arrondis modifient le DOM (ils ajoutent une série de DIV en haut et en bas du conteneur pour créer la bordure arrondie), ce qui prend du temps, et le focus() se produit avant la fin du DOM mise à jour?

Merci pour votre aide

Ed

+0

Pour commencer, le plugin jQuery aux coins arrondis a maintenant plus d'un an. La façon dont jQuery UI le fait est avec la détection du navigateur et CSS spécifique au navigateur (comme -moz-border-radius). Pour IE, cependant, jQuery UI omet complètement les coins arrondis, car le support est tout simplement médiocre. –

+0

vous pourriez envisager d'utiliser [Formwin] (https://github.com/rocco/formwin) aussi – Rocco

Répondre

0

Depuis que vous faites un délai d'attente et il fonctionne, pourrait-il que l'élément de formulaire est chargé après le document est prêt? C'EST À DIRE. chargé avec ajax ou créé avec javascript?

Je sais que les coins JQuery essaie d'utiliser CSS3 par navigateur, mais si c'est IE, il fait un tas de divs. Se pourrait-il que cela prenne plus de temps dans IE6/7 donc le timeout n'est pas nécessaire>