2009-08-10 6 views
1

J'ai une entrée (forme extérieure) qui capture le nom d'une image. L'utilisateur doit remplir un nouveau nom et appuyer sur Entrée. Le rappel Ajax renomme l'image. Cela marche.Pourquoi la valeur d'entrée ne peut pas être modifiée en appuyant sur la touche d'échappement

Je voudrais ajouter la possibilité de «réinitialiser» le contenu d'entrée lorsque l'utilisateur appuie sur échapper (# 27). Mais je ne suis pas capable de remplir la valeur de l'entrée avec ma valeur.

Le code est

<input id="escapeInput" value="this is test" /> <input type="button" id="setDetaultToEscapeInput" value="Set default" /> 

jQuery(document).ready(function() { 
    jQuery("#escapeInput").keydown(function(evt) { 
     if (evt.keyCode == 27) { 
      var input = jQuery(this); 
      input.val('some default value') // doesn't work 
      input[0].value = 'some default value 2'; // doesn't work 
      input.parent().append('changed'); 
     } 
    }); 
    jQuery("#setDetaultToEscapeInput").click(function() { 
     var input = jQuery("#escapeInput"); 
     input.val('some default value') // works ok 
    }); 
}); 

La chose intéressante est que si je teste par exemple pour le caractère 'A' (if (evt.keyCode == 65)), le code fonctionne. Une idée de comment le gérer? Cela ne fonctionne pas seulement en FF (Opera et IE8 sont OK).

Répondre

2

Essayez plutôt d'utiliser l'événement de touche.

$(function() { 
    $("#escapeInput").keyup(function(e) { 
     if (e.keyCode == 27) { 
      $(this).val("some default value"); 
     } 
    }); 
}); 
+0

Très facile à changer et cela fonctionne, thx! – stej

0

Essayez cette

 $(document).ready(function() { 
      $("#escapeInput").keypress(function(evt) { 
        var keycode = null; 
        if(evt.keyCode) { 
         keycode = evt.keyCode; 
        } else { 
         keycode = evt.which; 
        } 
        if (keycode == 27) { 
       $(this).val("some default value"); 
       } 
      }); 
     }); 
Questions connexes