2011-10-06 4 views
1

J'utilise ASP.NET MVC 3 avec ajax discret et je voudrais empêcher la forme de soumission par entrer. J'ai écrit le code suivant pour le faireAjax.BeginForm + empêcher soumettre sur entrer

$(window).keypress(function (event) { 
    if (event.which == 13) { 
     event.preventDefault(); 
    } 
}); 

Malheureusement cet événement n'est pas déclenché sur IE8. Y a-t-il d'autres options? (J'utilise jQuery 1.6.4)

Répondre

2

Vous devez mettre l'accent sur l'élément suivant dans DOM

$(window).keypress(function (event) { 
    if (event.which == 13) { 
     $(this).next().focus(); 
    } 
}); 

Vérifiez le type d'élément suivant, si le type est une zone de texte (Affiche autorisée), ou sur le bouton/Soumettre (entrer = cliquer) alors nous passons juste à la prochaine chose.

exemple

,

if (e.which == 13) { 
     var $targ = $(e.target); 

     if (!$targ.is("textarea") && !$targ.is(":button,:submit")) { 
      var focusNext = false; 
      $(this).find(":input:visible:not([disabled],[readonly]), a").each(function(){ 
       if (this === e.target) { 
        focusNext = true; 
       } 
       else if (focusNext){ 
        $(this).focus(); 
        return false; 
       } 
      }); 

      return false; 
     } 
    } 
+0

Le problème principal est que cet événement n'est pas déclenché dans IE8. Dans IE9, cela fonctionne bien. –

+0

essayez e.keyCode au lieu de e.qui dans IE. aussi vous voulez utiliser keydown() au lieu de keypress() dans IE. vérifier cela sur http://unixpapa.com/js/key.html – Priyank

+0

@Priyank - joli commentaire additif: P – Tommy

0

EDIT: Oh, viens de relire votre question - dans Internet Explorer, vous voulez probablement cibler $(window).keydown(function(event) au lieu de keypress

Je pense que dans IE, vous devez regarder le event.keyCode propriété

$(window).keypress(function (event) { 
if(event && event.which){ //if which property of event object is supported (NN4) 
characterCode = event.which //character code is contained in NN4's which property 
} 
else{ 
characterCode = event.keyCode //character code is contained in IE's keyCode property 
} 

if (characterCode == 13){ 
    event.preventDefault(); 
} 
0

Vérifiez this pour vous assurer que vous appuyez sur la touche ou La clé vers le bas est même ramassée dans votre navigateur. Si vous ne voulez pas que cet événement retourne quelque chose, alors simplement return false;

Questions connexes