Wie ist es möglich, ein Eingabefeld in JavaScript bearbeitbar zu machen? Ich meine, onFocus, um es im Einfügemodus zu setzen, damit Werte überschrieben werden können. Irgendwelche Vorschläge ???
Vielen Dank, es war zumindest für mich nützlich
Wie ist es möglich, ein Eingabefeld in JavaScript bearbeitbar zu machen? Ich meine, onFocus, um es im Einfügemodus zu setzen, damit Werte überschrieben werden können. Irgendwelche Vorschläge ???
Dies sollte in modernen Browsern funktionieren (auch auf Mobilgeräten):
const input = document.querySelector('input'); // oder ein Textfeld
input.addEventListener('keypress', function() {
const s = this.selectionStart;
this.value = this.value.slice(0, s) + this.value.slice(s + 1);
this.selectionEnd = s;
}, false);
Hinweis: Dies ist eine grundlegende Form der Einfügefunktionalität, daher können einige Standardfunktionen wie STRG+Z beeinträchtigt sein.
Mit dieser Lösung haben Sie leider die Möglichkeit zum Rückgängigmachen (ctrl-z) verloren.
@DiegoPamio Leider ist es so. Ich habe versucht, meine eigene CTRL+Z Implementierung zu machen, aber sie ist in vielen Fällen gescheitert.
Nachdem ich ein wenig gegoogelt habe, scheint dies damit zusammenzuhängen. Es könnte funktionieren, wenn man ein wenig mit folgendem Code herumspielt, aber es könnte nur in bestimmten Browsern auf spezifischen Betriebssystemen funktionieren. Es ist jedoch einen Versuch wert.
document.execCommand('OverWrite', false, true);
document.execCommand('OverWrite', false, false);
Wie von Ihnen angefordert, würde die Implementierung ungefähr so aussehen:
Ich würde hier +1 geben, wenn es mehr browserübergreifend kompatibel wäre. Tatsächlich wird es nur von Internet Explorer unterstützt. Tatsächlich scheint nur der IE die Einfügetaste für das Überschreiben von Eingaben zu unterstützen.
Ich habe versucht, dies zu verwenden, aber ohne Erfolg... kannst du ein kurzes Beispiel geben, wie man es umsetzen kann. Ich verwende das onKeypress Ereignis. Danke
2020 Update: Dies funktioniert für IE, aber nicht für Firefox, Chromium oder Edge Legacy. Die Einfg-Taste funktioniert in ContentEditable-Bereichen in Chromium, aber nicht in Firefox. webdbg.com/test/edit
EDIT: Kann je nach Bedeutung hinter der Frage völlig off-topic sein.
Wenn Sie jQuery verwenden können, ist Jeditable ein schönes Plugin, um genau das zu tun.
Wenn Sie Ihren eigenen Code schreiben müssen, werfen Sie einen Blick darauf, wie das Plugin funktioniert, und verwenden Sie es als Ausgangspunkt.
Im Grunde genommen sind die Schritte:
Sie können versuchen, den Einfügemodus zu imitieren, indem Sie den Eingabewert bei keyup neu schreiben:
var input = $('input'); // Ihr Eingabeelement
Event.observe(input, 'keydown', function(e) { // Ereignisbehandler
input._lastvalue = input.value;
});
Event.observe(input, 'keyup', function(e) { // Ereignisbehandler
if(input.value == input._lastvalue) return;
if(input.value.length <= input._lastvalue.length) return;
var caretPos = doGetCaretPosition(input);
input.value = input.value.slice(0,caretPos) + input.value.slice(caretPos+1);
doSetCaretPosition(input, caretPos);
});
Hier ist eine Demo : http://jsfiddle.net/z6khW/
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.
0 Stimmen
Ist ein Eingabefeld nicht bereits bearbeitbar? Du redest von , richtig?
1 Stimmen
@mplacona: Er meint, den Einfügen-Button auf der Tastatur nachzuahmen, um das folgende Zeichen zu überschreiben.
0 Stimmen
Ich lese es als Implementierung von Bearbeiten am Platz, aber es könnte auch bedeuten, dass eine einfache, alte Eingabe in einer Datenbank gespeichert wird. Weitere Klarstellungen sind erforderlich.
0 Stimmen
@ajm: Du hast recht, es kann auf beide Arten gelesen werden.