Ich suche nach einer Möglichkeit, Eingaben zu bereinigen, die ich in den Browser einfüge. Ist dies mit jQuery möglich?
Ich habe es bisher geschafft, Folgendes zu finden:
$(this).live(pasteEventName, function(e) {
// this is where i would like to sanitize my input
return false;
}
Leider ist meine Entwicklung aufgrund dieses "kleinen" Problems zum Stillstand gekommen. Ich würde mich wirklich zu einem glücklichen Camper machen, wenn mich jemand in die richtige Richtung weisen könnte.
Antworten:
OK, bin gerade auf das gleiche Problem gestoßen. Ich bin den langen Weg gegangen
Nur eine kleine Zeitüberschreitung, bis .val () func gefüllt werden kann.
E. E.
quelle
Sie können den Wert direkt aus dem Ereignis abrufen . Es ist ein bisschen stumpf, wie man dorthin kommt.
Geben Sie false zurück, wenn Sie nicht möchten, dass es durchlaufen wird.
quelle
e.clipboardData.getData('text')
in einfachem JavaScript tun .Aus Gründen der plattformübergreifenden Kompatibilität sollten Ereignisse oninput und onpropertychange behandelt werden:
quelle
Ich habe es irgendwie mit dem folgenden Code behoben:
Jetzt muss ich nur noch den Caret-Standort speichern und an diese Position anhängen, dann bin ich fertig ... denke ich :)
quelle
.find(':focus')
, und wissen, dass dieses Element die Caret-Position dafür bestimmt. Sehen Sie das .input
macht den Unterschied :) Ich habe diese normalerweise in meinen Textbox-Ereignissen,keyup keydown paste input
aber es hängt natürlich davon ab, was Ihre Motive sindHmm ... Ich denke, Sie können
e.clipboardData
damit die eingefügten Daten abfangen. Wenn es nicht klappt, schauen Sie hier .quelle
Warten Sie auf das Einfügeereignis und legen Sie einen Listener für Keyup-Ereignisse fest. Erfassen Sie beim Keyup den Wert und entfernen Sie den Listener für das Keyup-Ereignis.
quelle
Es wird gut funktionieren.
quelle
Dies kommt dem näher, was Sie vielleicht wollen.
Beachten Sie, dass Sie derzeit den vollständigen Wert des Elements + den Wert der Zwischenablage erhalten, wenn das Objekt clipboardData nicht gefunden wird (in anderen Browsern als dem Internet Explorer).
Sie können wahrscheinlich einige zusätzliche Schritte ausführen, um die beiden Werte vor einer Eingabe und nach der Eingabe zu unterscheiden, wenn Sie wirklich erst danach sind, welche Daten wirklich in das Element eingefügt wurden.
quelle
Dies funktioniert für Mauseinfügeereignisse.
quelle
Wie wäre es, wenn Sie den ursprünglichen Wert des Felds mit dem geänderten Wert des Felds vergleichen und die Differenz als eingefügten Wert abziehen? Dadurch wird der eingefügte Text auch dann korrekt erfasst, wenn im Feld bereits Text vorhanden ist.
http://jsfiddle.net/6b7sK/
quelle
Dieser Code funktioniert für mich entweder durch Einfügen mit der rechten Maustaste oder durch direktes Kopieren und Einfügen
Wenn ich einfüge
Section 1: Labour Cost
, wird es1
in Textfeld.Um nur Float-Werte zuzulassen, verwende ich diesen Code
quelle
Des Weiteren:
quelle
Siehe dieses Beispiel: http://www.p2e.dk/diverse/detectPaste.htm
Es verfolgt im Wesentlichen jede Änderung mit einem Eingabeereignis und prüft dann, ob es sich um eine Einfügung handelt, indem es einen String vergleicht. Oh, und im IE gibt es ein Onpaste-Ereignis. So:
quelle
Diese Methode verwendet jqueries content (). Unwrap ().
Durchsuchen Sie nach einer bestimmten Zeitüberschreitung alle Inhalte, die Tags entpacken, die nicht die zuvor festgelegte Klasse haben. Hinweis: Diese Methode entfernt keine selbstschließenden Tags wie in
einem Beispiel unten.
quelle
Dies erwies sich als ziemlich illusorisch. Der Wert der Eingabe wird vor der Ausführung des Codes innerhalb der Einfügeereignisfunktion nicht aktualisiert. Ich habe versucht, andere Ereignisse aus der Funktion zum Einfügen von Ereignissen heraus aufzurufen, aber der Eingabewert wird immer noch nicht mit dem eingefügten Text innerhalb der Funktion von Ereignissen aktualisiert. Das sind alle Ereignisse außer Keyup. Wenn Sie keyup aus der Funktion zum Einfügen von Ereignissen aufrufen, können Sie den eingefügten Text aus der Funktion keyup event bereinigen. wie so ...
Hier gibt es eine Einschränkung. Wenn Sie in Firefox den Eingabetext bei jedem Keyup zurücksetzen, wenn der Text länger als der durch die Eingabebreite zulässige sichtbare Bereich ist, wird durch das Zurücksetzen des Werts bei jedem Keyup die Browserfunktionalität unterbrochen, mit der der Text automatisch zur Caret-Position am gescrollt wird Ende des Textes. Stattdessen scrollt der Text zurück zum Anfang und lässt das Caret außer Sicht.
quelle
Skript zum Entfernen von Sonderzeichen aus allen Feldern mit dem Klassenportlet-Formular-Eingabefeld:
quelle
quelle