Question

Je l'extrait de code de code suivant:

$('#messages input').live('keydown', function(e){
  if(e.keyCode == 13) {
    alert($(this).attr('value'));
    e.preventDefault();
    return false;
  }
});

où « entrée #message » est évidemment un groupe d'éléments de saisie de texte. Je veux attraper la touche « entrée » et l'empêcher de rafraîchir la page. Cependant, il échoue à chaque fois. L'alerte fonctionne très bien, mais il semble que le preventDefault () ne fonctionne pas.

Quelqu'un a des idées?

Modifier Je l'ai dit que je travaille dans ASP.NET, et il est à l'intérieur d'un élément de forme. Retirer de l'élément permet de résoudre le problème de forme, mais je voudrais savoir pourquoi preventDefault () ne fonctionne pas.

Était-ce utile?

La solution 2

Ironie du sort, ce fut l'alerte lui-même qui était à l'origine du problème.

AFAICT, l'alerte serait mettre fin à l'exécution de JavaScript avant la preventDefault () pourrait prendre effet, mais le navigateur continue le traitement de la séquence de touches, ce qui déclenche une soumission de formulaire.

Bizarre, mais là vous l'avez.

Autres conseils

pourrait essayer un

e.stopPropagation()
$('#form_deal_step1').live('submit',function(){
        $('.column .column_child select').not(':hidden').each(function(ev){
             if($(this).val()=='?')
             {
                 alert('Please select the ages of each child.');
                 ev.preventDefault();
                 return false;
             }
          });
})
var age_selected=1;
$('.column .column_child select').not(':hidden').each(function(){
    if($(this).val()=='?')
    {                
        age_selected=0; 
    }
});
if(age_selected==0)
{
    alert('Please select the ages of each child.');
    return false;
}

Je pense que les formulaires sont présentés sur keypress, et non sur keydown. Essayez

$('#messages input').live('keypress', function(e){
  if(e.keyCode == 13) {
    alert($(this).attr('value'));
    e.preventDefault();
    return false;
  }
});

Pour autant que je suis au courant de l'actualisation de la page est une fonction par défaut de la forme et non le bouton d'entrée et en tant que tel, vous devez empêchez par défaut sur la forme plutôt que l'entrée.

Quelque chose le long des lignes de:

$('#target').submit(function() {
  return false;
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top