wake-up-neo.com

eingabewert nach Tastendruck abrufen

Ich habe einen <input type="text"> und muss eine Funktion aufrufen, nachdem der Text im Textfeld geändert wurde (einschließlich der Aktionen, die während der jQuery-Keydown- und Keypress-Handler ausgeführt werden).

Wenn ich meine Funktion vom jQuery-Handler aus aufrufe, sehe ich den Wert (e.target.value) so, wie er war, bevor die Eingabe hinzugefügt wurde. Da ich die Eingabe nicht jedes Mal manuell hinzufügen möchte, wie kann ich meine Funktion aufrufen und den aktualisierten Wert verwenden lassen?

21
Andrey Koltsov

Wenn ich Sie richtig verstehe, können Sie so etwas tun

$('input').bind('change keydown keyup',function (){
   /// do your thing here.
   //  use $(this).val() instead e.target.value
});

Aktualisiert: 03/05/13

Bitte beachten Sie: Sie sollten .on() besser als .bind() verwenden.

Seit jQuery 1.7 ist die .on () -Methode die bevorzugte Methode, um Event-Handler an ein Dokument anzuhängen. Bei früheren Versionen wird die .bind () -Methode verwendet, um einen Ereignishandler direkt an Elemente anzuhängen. Handler werden an die aktuell ausgewählten Elemente im jQuery-Objekt angehängt. Diese Elemente müssen also an dem Punkt vorhanden sein, an dem der Aufruf von .bind () erfolgt. Eine flexiblere Ereignisbindung finden Sie in der Erläuterung der Ereignisdelegierung in .on () oder .delegate ().

Weitere Informationen jQuery Bind

23
Val

Sie können keyup verwenden - Sie rufen es also erst an, wenn der Schlüssel freigegeben wurde:

$("#idofinputfield").keyup(function() {
    youFunction($(this).val());
});
16
Scoobler

Hast du es ausprobiert? 

$('#target').keyup(function(){       
     alert($(this).val());      
});
3
Jishnu A P

wenn Sie an ein Element in der Hierarchie binden müssen, können Sie das keyUp -Ereignis im keyDown-Handler abonnieren.

$("#container").keydown(function (e) {
   //here you decide whether to handle the key event, and grab the control that sent the event 
   var myInput = e.target;
   $("#container").one('keyup', function() {
      console.log(myInput.val());  
      // do smth here
   });
});
1
Kosau

Sie sollten event.key verwenden, um den aktuellen Eingabewert abzurufen, bevor er in der Textbox angezeigt wird.

Hier ist der Code. 

function validate()
{
  document.getElementById("divOutput").innerHTML = event.key;
  //I am here returning false so that you can see that this value is being entered before the text is input. This is very useful for number validation purposes.
  return false;
}
Enter Number: <input type="text" id="txtInput" onkeydown="return validate()" /><br />
You Entered <div id="divOutput"></div>

0
vibs2006

Sie können den zukünftigen Wert generieren, indem Sie die Position einnehmen, an der das neue Zeichen eingefügt wird:

$('input').bind('keypress',function (){
   var value = e.target.value,
        idx = e.target.selectionStart,
        key = e.key;
        value =  value.slice(0, idx) + key + value.slice(idx + Math.abs(0));
    return yourfunction(value);
});
0
dobra