2009-08-10 4 views
1

Ich habe eine Eingabe (externes Formular), die den Namen eines Bildes erfasst. Der Benutzer sollte einen neuen Namen eingeben und die Eingabetaste drücken. Der Ajax-Rückruf benennt das Bild um. Das funktioniert.Warum der Eingabewert nicht geändert werden kann, wenn die Escape-Taste gedrückt wird

Ich möchte die Fähigkeit hinzufügen, den Eingabe-Inhalt "zurückzusetzen", wenn der Benutzer die Escape-Taste drückt (# 27). Aber ich kann den Wert der Eingabe nicht mit meinem Wert füllen.

Der Code ist

<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 
    }); 
}); 

Das Interessante daran ist, dass, wenn ich testen, zum Beispiel für "A" -Zeichen (if (evt.keyCode == 65)) funktioniert der Code. Irgendeine Idee, wie man damit umgeht? Es funktioniert nicht nur in FF (Opera und IE8 sind in Ordnung).

Antwort

2

Versuchen Sie stattdessen, das keyup-Ereignis zu verwenden.

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

Sehr einfach zu ändern und es funktioniert, thx! – stej

0

Versuchen Sie, diese

 $(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"); 
       } 
      }); 
     });