2011-07-26 4 views
0

J'ai un calque d'erreur qui est présenté sur un formulaire pour une entrée invalide/vide. Lorsque cette couche d'erreur est présentée, je veux que le champ actuel perde son focus. Dans IE, je ne peux pas faire fonctionner ça. L'accent reste toujours sur le terrain.IE perdre le focus après avoir cliqué sur le champ

<!--Jquery function to override JS alert with DOM layer alert message--> 
function customAlert(){ 
    var args = arguments; 
    if(args.length > 1) { 
     // check that custom alert was called with at least two arguments 
     var msg = args[0]; 

     $("li").removeClass("alertRed"); 
     $("input").removeClass("CO_form_alert"); 
     $("select").removeClass("CO_form_alert"); 
     var div = $(".errorPopup"); 
     div.css({"display":"block"}); 


     if (div.length == 0) { 
      div = $("<div class='errorPopup' onclick='$(this).hide();'></div>"); 
      $("body").prepend(div); 
     } 
     div.html(msg); 
     for(var i = 1; i < args.length; i++) { 
      var inputID = args[i]; 
      $("#"+inputID).addClass("CO_form_alert").parent().addClass("alertRed"); 
      $("input,select,radio,checkbox").focus(function(){ 
       $(this).unbind('focus'); // remove this handler 
       $('.errorPopup').hide(); // hide error popup 

      }); 


     } 
    } 
} 

J'ai essayé ('body'). Focus(); et $ ("#" + inputID) .focusout(); qui ne fonctionne pas non plus.

J'ai aussi essayé:

div.css({"display":"block"}); 
$("input,select,radio,checkbox").blur(); 

et

$("input,select,radio,checkbox").blur(function(){ 
       $(this).unbind('focus'); // remove this handler 
       $('.errorPopup').hide(); // hide error popup 

      }); 

mais ni l'un fonctionne.

Répondre

0

Utiliser la méthode de flou.

$("input,select,radio,checkbox").blur(); 
+0

voir la mise à jour - ne fonctionne toujours pas – Jason

+0

Vous pouvez faire une chose. Définissez tabIndex = "- 1" sur le conteneur d'erreur, puis définissez le focus sur le conteneur d'erreur lorsque vous l'affichez. Vous pouvez dire $ ("errorContainerSelector"). Focus(); – ShankarSangoli

+0

essayé aussi. Il semble se bloquer une seconde dans IE, puis le focus/curseur reste sur le terrain – Jason

0

Avez-vous essayé

$("input,select,radio,checkbox").blur(); 

?

+0

voir mise à jour - ne fonctionne toujours pas – Jason

Questions connexes