630 Stimmen

Wie kann ich am besten verfolgen, ob sich etwas ändert, wenn ich input type="text" eingebe?

Meiner Erfahrung nach, input type="text" onchange tritt in der Regel erst nach Ihrem Weggang ein ( blur ) die Kontrolle.

Gibt es eine Möglichkeit, den Browser zu zwingen, die onchange jedes Mal textfield Inhaltliche Änderungen? Wenn nicht, was ist der eleganteste Weg, dies "manuell" zu verfolgen?

Verwendung von onkey* Ereignisse ist nicht zuverlässig, da Sie mit der rechten Maustaste auf das Feld klicken und Einfügen wählen können, wodurch das Feld ohne Tastatureingabe geändert wird.

Es setTimeout der einzige Weg Hässlich :-)

16voto

Fernando André Punkte 1192

onkeyup passiert, nachdem Sie zum Beispiel die Taste t wenn ich den Finger hebe, geschieht die Aktion, aber auf keydown die Handlung findet statt, bevor ich die Figur einstelle t

Ich hoffe, dies ist für jemanden hilfreich.

だから onkeyup ist besser geeignet, wenn Sie das, was Sie gerade getippt haben, jetzt senden wollen.

11voto

Khushwant kodecha Punkte 361

使用方法 oninput 代わりに onchange .

index.html

<html>
  <head>
    <title>title here</title>
    <script src="index.js"></script>
  </head>
  <body>
    <input oninput="onclickhandler(this)"></input>
  </body>
</html>

script.js

function onclickhandler(e) {
  console.log(e.value);
}

10voto

Mohnish Punkte 1677

Ich hatte eine ähnliche Anforderung (Textfeld im Stil von Twitter). Verwendet onkeyup y onchange . onchange kümmert sich um die Einfügeoperationen der Maus, wenn der Fokus aus dem Feld verloren geht.

[Update] In HTML5 oder höher verwenden Sie oninput um Echtzeit-Updates für Charakteränderungen zu erhalten, wie in anderen Antworten oben erklärt.

8voto

Alex Uke Punkte 125

Bitte beurteilen Sie den nächsten Ansatz mit JQuery:

HTML:

<input type="text" id="inputId" />

Javascript(JQuery):

$("#inputId").keyup(function() {
    $(this).blur();
    $(this).focus();
});

$("#inputId").change(function() {
    // Do whatever you need to do on actual change of the value of the input field
});

8voto

Pikamander2 Punkte 5745

Methode 1: Hinzufügen eines Ereignis-Listeners für input :

element.addEventListener("input", myFunction);

Methode 2: Definieren Sie die oninput Eigenschaft mit JavaScript:

element.oninput = function()
{
    myFunction();
};

Methode 3: Definieren Sie die oninput Eigenschaft mit HTML:

<input type="text" oninput="myFunction();">

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X