Wie erkennt man, welchen Text der Benutzer in Textarea mit JS einfügt?Ermitteln eingefügten Text mit Strg + v oder Rechtsklick -> Einfügen
Antwort
Sie die Paste Ereignis nutzen, um die Paste in den meisten Browsern zu erkennen (insbesondere nicht Firefox 2 obwohl). Notieren Sie die aktuelle Auswahl, wenn Sie das Einfügeereignis behandeln, und legen Sie dann einen kurzen Zeitgeber fest, der eine Funktion aufruft, nachdem der Einfügevorgang abgeschlossen wurde. Diese Funktion kann dann Längen vergleichen und wissen, wo nach dem eingefügten Inhalt gesucht werden soll. Etwas wie das Folgende. Der Kürze halber funktioniert die Funktion, die die Textbereichauswahl erhält, nicht in IE. Sehen Sie hier für etwas, das tut: How to get the start and end points of selection in text area?
function getTextAreaSelection(textarea) {
var start = textarea.selectionStart, end = textarea.selectionEnd;
return {
start: start,
end: end,
length: end - start,
text: textarea.value.slice(start, end)
};
}
function detectPaste(textarea, callback) {
textarea.onpaste = function() {
var sel = getTextAreaSelection(textarea);
var initialLength = textarea.value.length;
window.setTimeout(function() {
var val = textarea.value;
var pastedTextLength = val.length - (initialLength - sel.length);
var end = sel.start + pastedTextLength;
callback({
start: sel.start,
end: end,
length: pastedTextLength,
text: val.slice(sel.start, end)
});
}, 1);
};
}
var textarea = document.getElementById("your_textarea");
detectPaste(textarea, function(pasteInfo) {
alert(pasteInfo.text);
// pasteInfo also has properties for the start and end character
// index and length of the pasted text
});
Nach können Ihnen helfen,
function submitenter(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
if (keycode == //event code of ctrl-v)
{
//some code here
}
}
<teaxtarea name="area[name]" onKeyPress=>"return submitenter(this,event);"></textarea>
Ja, aber was wird an der Stelle von "etwas Code hier" sein, wenn ich herausfinden will, welchen Text der Benutzer einfügt? – lam3r4370
Arbeiten auf IE 8 - 10
Erstellen von benutzerdefinierten Code der Befehl Einfügen erfordert mehrere Schritte zu ermöglichen.
- Setzen Sie das Ereignisobjekt returnValue im onbeforepaste-Ereignis auf false, um den Kontextmenübefehl Einfügen zu aktivieren.
- Brechen Sie das Standardverhalten des Clients ab, indem Sie im onpaste-Ereignishandler das Ereignisobjekt returnValue auf false setzen. Dies gilt nur für Objekte wie das Textfeld, für die ein Standardverhalten definiert ist.
- Geben Sie ein Datenformat an, in das die Auswahl über die Methode "getData" des Objekts "clipboardData" eingefügt werden soll.
- rufen Sie die Methode im onpaste-Ereignis auf, um benutzerdefinierten Einfügecode auszuführen.
dieses Ereignis aufzurufen, wählen Sie eine der folgenden Möglichkeiten:
- der rechten Maustaste das Kontextmenü anzuzeigen, und wählen Sie Einfügen aus.
- Oder drücken Sie STRG + V.
Beispiele
<HEAD>
<SCRIPT>
var sNewString = "new content associated with this object";
var sSave = "";
// Selects the text that is to be cut.
function fnLoad() {
var r = document.body.createTextRange();
r.findText(oSource.innerText);
r.select();
}
// Stores the text of the SPAN in a variable that is set
// to an empty string in the variable declaration above.
function fnBeforeCut() {
sSave = oSource.innerText;
event.returnValue = false;
}
// Associates the variable sNewString with the text being cut.
function fnCut() {
window.clipboardData.setData("Text", sNewString);
}
function fnBeforePaste() {
event.returnValue = false;
}
// The second parameter set in getData causes sNewString
// to be pasted into the text input. Passing no second
// parameter causes the SPAN text to be pasted instead.
function fnPaste() {
event.returnValue = false;
oTarget.value = window.clipboardData.getData("Text", sNewString);
}
</SCRIPT>
</HEAD>
<BODY onload="fnLoad()">
<SPAN ID="oSource"
onbeforecut="fnBeforeCut()"
oncut="fnCut()">Cut this Text</SPAN>
<INPUT ID="oTarget" TYPE="text" VALUE="Paste the Text Here"
onbeforepaste="fnBeforePaste()"
onpaste="fnPaste()">
</BODY>
Voll doc: http://msdn.microsoft.com/en-us/library/ie/ms536955(v=vs.85).aspx
ein ziemlich alten Thread, aber Sie könnten jetzt http://willemmulder.github.com/FilteredPaste.js/ stattdessen verwenden. Damit können Sie steuern, was in ein Textfeld oder Contentable eingefügt wird.
Ich mag den Vorschlag für die rechte Maustaste
$("#message").on('keyup contextmenu input', function(event) {
alert("ok");
});
hier finded:
HTML5 bietet bereits onpaste
nicht nur <input/>
, sondern auch editierbare Elemente (<p contenteditable="true" />
, ...
<input type="text" onpaste="myFunction()" value="Paste something in here">
Vorsicht, dies ist kein Web-Standard. https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/onpaste. (MDN ist auch viel zuverlässiger als W3Schools für Web APIs) –
- 1. autohotkey Strg + Klick = Rechtsklick
- 2. forcePasteAsPlainText wird in Chrome nicht mit Strg + V berücksichtigt.
- 3. Rechtsklick oder Tippen mit zwei Fingern
- 4. Wie ändert man Pycharm 'Kopieren' und 'Einfügen' Funktion in Strg + C und Strg + V?
- 5. STRG + C/STRG + V funktioniert nicht in Eclipse
- 6. Wie kann ich STRG-V (Einfügen) in einer Winforms-Textbox zulassen?
- 7. Verhindern STRG V im HTML-Editor Ajax Control MS
- 8. Werte in Karte einfügen < K, V >
- 9. Text auf Android mit ADB einfügen?
- 10. VIM Ctrl-V Konflikt mit Windows Einfügen
- 11. Ermitteln von STRG + C in Node.js
- 12. Ermitteln der ID einer eingefügten Entität in Datomic?
- 13. Einfügen von Daten in ein beliebiges Anwendungs-Eingabefeld ohne Simulation von Strg + V. Windows C++
- 14. Ermitteln und unterdrücken REINSTALLMODE = v wechseln
- 15. Benutzerdefiniertes Kopieren/Einfügen-Verhalten mit C# winforms, während Text bearbeiten können Kopieren/Einfügen
- 16. Trimmen eingefügten Wert mit JavaScript
- 17. Holen Sie die ID des eingefügten Datensatzes nach dem Einfügen
- 18. Gibt es einen vim-Befehl, um eingefügten Text auszuwählen?
- 19. Anführungszeichen um eingefügten Text in Echo
- 20. Wie erkennt man Strg + V in Silverlight 4?
- 21. Browser Strg + F findet nicht sichtbarer Text
- 22. Warum erweitert sich die Karte <K,V> nicht Funktion <K,V>?
- 23. EntityFramework aktualisieren oder einfügen chinesischen oder nicht-englischen Text
- 24. Cassandra keine Zeile mit cyrillc Text einfügen
- 25. Warum Wörterbuch <T, V> explizit implementiert ICollection <KeyValuePair <T, V>>, wenn es bereits von IDictionary <T,V>
- 26. Site-spezifisches JavaScript überschreiben Rechtsklick Kontextmenü mit browserspezifischem Rechtsklick Kontextmenü
- 27. Strg-Taste gehalten, nachdem eine Strg-Taste gedrückt Ereignis und Strg-Taste Veranstaltung Simulation
- 28. Einfügen von Text aus der Zwischenablage mit der Schaltfläche
- 29. Benutzerdefiniertes Menü/Kontextmenü Mouse Over oder Rechtsklick
- 30. C#: Wie kann Dictionary <K,V> ICollection implementieren <KeyValuePair <K,V>> ohne Add (KeyValuePair <K,V>)?
möglich Duplikat von [Wie Facebook erkennen, wenn ein Link als PASTED worden] (http://stackoverflow.com/questions/1891145/how-does-facebook-detect-when- a-link-as-be-pasted) –
Nein, zum Beispiel, ich füge "test textarea", ich möchte erkennen, was Text eingefügt wird, in diesem Fall - "test textarea" – lam3r4370
Sie können wahrscheinlich nicht das Cross-Browser ... – galambalazs