Deaktivieren Sie das Einfügen von Text in HTML-Formulare

96

Gibt es eine Möglichkeit, mithilfe von JavaScript die Möglichkeit zu deaktivieren, Text in ein Textfeld in einem HTML-Formular einzufügen?

ZB habe ich ein einfaches Registrierungsformular, in dem der Benutzer seine E-Mail zweimal eingeben muss. Der zweite E-Mail-Eintrag dient dazu, sicherzustellen, dass der erste E-Mail-Eintrag keine Tippfehler enthält. Wenn der Benutzer jedoch seine E-Mail kopiert / einfügt, hat dies den Zweck verfehlt, und ich habe Probleme mit Benutzern, weil sie die falsche E-Mail eingegeben und kopiert / eingefügt haben.

Vielleicht war mir meine Frage nicht klar, aber ich versuche nicht zu verhindern, dass Leute Text in ihren Browser kopieren (oder per Drag & Drop auswählen). Ich will nur , um sie von stoppen Einfügen Eingabe in ein Textfeld Anwenderfehler zu minimieren.

Vielleicht können Sie anstelle dieses "Hacks" eine andere Lösung für das Kernproblem vorschlagen, das ich hier zu lösen versuche? Ich habe weniger als ein halbes Dutzend Benutzertests durchgeführt und dies ist bereits zweimal passiert. Mein Publikum verfügt nicht über hohe Computerkenntnisse.

justinl
quelle
111
Verhindern, dass Personen ihre E-Mail-Adresse aus ihrem Adressbuch in ihren Browser kopieren / einfügen. Das wird gut ankommen.
Quentin
28
Ich kann nicht viel tun, wenn ein Kunde auf der Änderung besteht. genieße dein Getränk :)
Justin
15
Es könnte vollkommen in Ordnung sein, wenn er das Einfügen in das Bestätigungsfeld nur deaktiviert, wenn die E-Mail NICHT in das ursprüngliche Feld eingefügt wurde. Mit anderen Worten, der Benutzer muss entweder die E-Mail in beide Felder oder in keines der Felder einfügen.
GJ.
25
Wenn ein Kunde danach fragt, sagen Sie ihm, wie schlecht eine Idee ist. Es ist eine großartige Möglichkeit, einen Kunden genau an dem Punkt zu verärgern, an dem er am wahrscheinlichsten einfach weggeht (zur Registrierungszeit). Sie möchten nicht, dass eine Kundenbeziehung mit der Entfremdung des Kunden beginnt. Diese Praxis wird sowohl immer häufiger als auch zunehmend zu beanstanden, da immer mehr Menschen Passwort-Manager verwenden. Siehe auch: ux.stackexchange.com/q/21062/9529 und ob. xkcd: xkcd.com/970
Mark Booth
Ich habe diese Frage gefunden, als ich gesucht habe, wie diese "Funktion" mit dem Elementinspektor besiegt werden kann. Es funktionierte!
SVD

Antworten:

53

Ich musste kürzlich das Einfügen in ein Formularelement widerwillig deaktivieren. Zu diesem Zweck habe ich eine browserübergreifende * Implementierung des Onpaste-Ereignishandlers von Internet Explorer (und anderen) geschrieben. Meine Lösung musste unabhängig von JavaScript-Bibliotheken von Drittanbietern sein.

Folgendes habe ich mir ausgedacht. Das Einfügen wird nicht vollständig deaktiviert (der Benutzer kann beispielsweise jeweils ein einzelnes Zeichen einfügen), aber es erfüllt meine Anforderungen und vermeidet, dass Sie sich mit keyCodes usw. befassen müssen.

// Register onpaste on inputs and textareas in browsers that don't
// natively support it.
(function () {
    var onload = window.onload;

    window.onload = function () {
        if (typeof onload == "function") {
            onload.apply(this, arguments);
        }

        var fields = [];
        var inputs = document.getElementsByTagName("input");
        var textareas = document.getElementsByTagName("textarea");

        for (var i = 0; i < inputs.length; i++) {
            fields.push(inputs[i]);
        }

        for (var i = 0; i < textareas.length; i++) {
            fields.push(textareas[i]);
        }

        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];

            if (typeof field.onpaste != "function" && !!field.getAttribute("onpaste")) {
                field.onpaste = eval("(function () { " + field.getAttribute("onpaste") + " })");
            }

            if (typeof field.onpaste == "function") {
                var oninput = field.oninput;

                field.oninput = function () {
                    if (typeof oninput == "function") {
                        oninput.apply(this, arguments);
                    }

                    if (typeof this.previousValue == "undefined") {
                        this.previousValue = this.value;
                    }

                    var pasted = (Math.abs(this.previousValue.length - this.value.length) > 1 && this.value != "");

                    if (pasted && !this.onpaste.apply(this, arguments)) {
                        this.value = this.previousValue;
                    }

                    this.previousValue = this.value;
                };

                if (field.addEventListener) {
                    field.addEventListener("input", field.oninput, false);
                } else if (field.attachEvent) {
                    field.attachEvent("oninput", field.oninput);
                }
            }
        }
    }
})();

So nutzen Sie dies, um das Einfügen zu deaktivieren:

<input type="text" onpaste="return false;" />

* Ich weiß, dass oninput nicht Teil der W3C-DOM-Spezifikation ist, aber alle Browser, mit denen ich diesen Code getestet habe - Chrome 2, Safari 4, Firefox 3, Opera 10, IE6, IE7 - unterstützen entweder oninput oder onpaste. Von all diesen Browsern unterstützt nur Opera Onpaste nicht, aber Oninput.

Hinweis: Dies funktioniert nicht auf einer Konsole oder einem anderen System, das eine Bildschirmtastatur verwendet (vorausgesetzt, die Bildschirmtastatur sendet bei Auswahl jeder Taste keine Tasten an den Browser). Wenn es möglich ist, dass Ihre Seite / App von jemandem mit einer Bildschirmtastatur und Opera verwendet wird (z. B. Nintendo Wii, einige Mobiltelefone), verwenden Sie dieses Skript nur, wenn Sie die Bildschirmtastatur getestet haben sendet nach jeder Schlüsselauswahl Schlüssel an den Browser.

Christopher Parker
quelle
58
Um zu verhindern, dass Firefox diese dumme Regel befolgt, gehen Sie zu about: config und ändern Sie dom.event.clipboardevents.enabled in false
lolesque
1
Selbst wenn ich die von Ihnen geschriebenen js nicht einbeziehe, kann ich verhindern, dass Benutzer etwas einfügen, indem onpaste="return false"ich nur
einfüge. Gibt
@viveksinghggits Der Code wird onpastein Browsern implementiert, die ihn noch nicht bereitstellen. Sie sagen " Ich kann verhindern, dass Benutzer etwas einfügen ", aber in welchen Browsern haben Sie dies getestet?
AnnanFay
In Bezug auf die Implementierung sehe ich zwei offensichtliche Verbesserungen: 1) Führen Sie den Code nur in Browsern aus, in denen er nicht bereits unterstützt wird, 2) führen Sie ihn erneut aus, wenn das DOM geändert wird - derzeit wird er nicht auf dynamisch hinzugefügte Eingaben angewendet.
AnnanFay
@ Rick, also sind Sie mit Textbereichen einverstanden, in die Benutzer alles einfügen können? Weil sie erwarten, dass es in anderen Bildschirmen, in denen die eingefügten Daten angezeigt werden, genau gleich aussieht und dass es genau so aussieht, wenn diese Daten in eine E-Mail eingefügt werden. Für mich möchte ich nicht die Telefonanrufe und Support-E-Mails, die damit einhergehen. Das Deaktivieren des Einfügens in einem bestimmten Feld ist meiner Meinung nach eine praktikable Option und Frage. Das Problem, das die meisten von uns haben, ist, wenn wir "Rich Text Editors" verwenden - diese Dinge scheinen alle vorhandenen Javascript- oder JQuery-Befehle zu überschreiben, um das Einfügen zu verhindern.
McAuley
144

Tu es nicht. Leg dich nicht mit dem Browser des Benutzers an. Durch Kopieren + Einfügen in ein E-Mail-Bestätigungsfeld übernimmt der Benutzer die Verantwortung für die Eingabe. Wenn sie dumm genug sind, eine fehlerhafte Adresse zu kopieren und einzufügen (mir ist es passiert), dann ist es ihre eigene verdammte Schuld.

Wenn Sie sicherstellen möchten, dass die E-Mail-Bestätigung funktioniert, lassen Sie den Benutzer seine E-Mails überprüfen, während Ihre Website wartet ("Bitte öffnen Sie Ihr Webmail-Programm in einem neuen Fenster"). Zeigen Sie die E-Mail-Adresse in großen, fetten Buchstaben an ("Die Bestätigungs-E-Mail an ... hat einen Fehler gemacht? Klicken Sie hier, um sie zu ändern).

Noch besser, wenn Sie können, lassen Sie den Benutzer einen eingeschränkten Zugriff haben, ohne dies zu bestätigen. Auf diese Weise können sie sich sofort anmelden und Sie verbessern Ihre Chancen, mit dem Besucher in Kontakt zu bleiben, auch wenn die Bestätigungsmail aus anderen Gründen (z. B. Spamfiltern) blockiert ist.

Pekka
quelle
6
Ich stimme Ihrer Antwort für ein Szenario zu, in dem die Benutzer selbst Daten eingeben. Wenn ein Benutzer jedoch eine E-Mail-Adresse für eine andere Person eingibt, z. B. ein CRM-System oder ähnliches, ist es nicht möglich, Ihre Lösung zu implementieren. In diesen Fällen gibt der Benutzer nicht seine eigene E-Mail-Adresse ein, sodass er diese wahrscheinlich falsch schreibt. Wenn Sie das Einfügen in das E-Mail-Bestätigungsfeld zulassen, erhalten Sie viele falsche Daten, sodass das Einfügen nicht falsch ist. Als Entwickler müssen Sie gegen "dumm genug" Benutzer vorgehen, um die Geschäftsdaten zu schützen.
Theyetiman
12
Es gibt auch den häufigen Fall, dass der Entwickler, der sich mit dieser Frage befasst, wenig oder gar keine Kontrolle über die Anforderungen des Projekts hat, an dem er arbeitet. Dies ist keine Antwort auf die hier gestellte Frage, also -1.
Nick
4
Wenn Sie sagen, dass Sie es nicht tun, wird die Frage nicht beantwortet. Ich habe derzeit eine Anforderung, wo das Einfügen deaktiviert werden soll.
Darian Everett
13
Wenn Sie jemals eine solche Anforderung erhalten, ist es Ihre Aufgabe als Fachmann, diese zurückzudrängen. Sie sind mehr als ein Paar Hände, die Code schreiben können.
Dan Pantry
2
Aber es gibt gültige Gründe für fast alles und die Nichtbeantwortung einer Frage, weil Sie nicht glauben, dass IHR Grund gültig ist, ist irritierend. Angenommen, Sie hatten ein Quiz, das Sie mit komplexen Antworten implementieren wollten. Wenn Sie das Einfügen deaktivieren und den Schüler zwingen, die gesamte Antwort einzugeben, anstatt sie einzufügen, wird die Antwort in den Speicher übertragen, während nur das Einfügen von Kopien wahrscheinlich wertlos wäre. Dafür gibt es einen triftigen Grund. Warnen Sie jemanden, dass das, was er versucht, in den meisten Fällen keine gute Idee ist, aber geben Sie eine Antwort ... oder es ist am besten, einfach nicht zu antworten.
Halfhoot
69

Fügen Sie den Eingaben, für die Sie die Kopier- und Einfügefunktion deaktivieren möchten, eine Klasse von 'disablecopypaste' hinzu, und fügen Sie dieses jQuery-Skript hinzu

  $(document).ready(function () {
    $('input.disablecopypaste').bind('copy paste', function (e) {
       e.preventDefault();
    });
  });
Boycs
quelle
1
Funktioniert gut für mich, Panzer!
Gabriel Glauber
26

Gerade erst haben wir es erreicht onpaste:"return false", dank: http://sumtips.com/2011/11/prevent-copy-cut-paste-text-field.html

Wir haben verschiedene andere Optionen zur Verfügung, wie unten aufgeführt.

<input type="text" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off/><br>
Kailas
quelle
16

Sie können ... aber nicht.

Sie sollten das Standardverhalten eines Benutzerbrowsers nicht ändern. Es ist wirklich eine schlechte Benutzerfreundlichkeit für Ihre Webanwendung. Auch wenn ein Benutzer diesen Hack deaktivieren möchte, kann er einfach Javascript in seinem Browser deaktivieren.

Fügen Sie diese Attribute einfach dem Textfeld hinzu

ondragstart=”return false onselectstart=”return false
Sheff
quelle
6
Die Frage betrifft das Deaktivieren des Einfügens. Diese Technik würde das Kopieren nur erschweren und das Einfügen überhaupt nicht bewirken.
Bendman
10

Verrückte Idee: Der Benutzer muss Ihnen im Rahmen des Anmeldevorgangs eine E-Mail senden. Dies wäre natürlich unpraktisch, wenn das Klicken auf einen Mailto-Link nicht funktioniert (wenn sie beispielsweise Webmail verwenden), aber ich sehe es als eine Möglichkeit, gleichzeitig gegen Tippfehler zu garantieren und die E-Mail-Adresse zu bestätigen.

Es würde so aussehen: Sie füllen den größten Teil des Formulars aus und geben ihren Namen, ihr Passwort und so weiter ein. Wenn sie auf "Senden" klicken, klicken sie tatsächlich auf einen Link, um E-Mails an Ihren Server zu senden. Sie haben ihre anderen Informationen bereits gespeichert, daher enthält die Nachricht nur ein Token, das angibt, für welches Konto dies gilt.

Josh Lee
quelle
Ha, das ist eine nette Idee.
Justin
7

Wie wäre es, wenn Sie eine Bestätigungs-E-Mail an die E-Mail-Adresse senden, die der Benutzer gerade zweimal eingegeben hat und in der sich ein Link zu einer Bestätigungs-URL auf Ihrer Website befindet. Dann wissen Sie, dass er die Nachricht erhalten hat?

Jeder, der nicht klickt, um den Empfang der E-Mail zu bestätigen, hat möglicherweise seine E-Mail-Adresse falsch eingegeben.

Keine perfekte Lösung, sondern nur einige Ideen.

Richard Lucas
quelle
4
Ich habe diese Implementierung derzeit. Das Problem ist, dass der Benutzer denkt, dass er die E-Mail aufgrund eines Fehlers auf unserer Seite nicht erhält, weil er seine E-Mail-Adresse überprüft, von der er glaubt , dass er sie eingegeben hat, und keine E-Mail hat. Wenn sie versuchen, sich erneut zu registrieren, ist der von ihnen verwendete Benutzername jetzt nicht mehr verfügbar, da er an dieser falschen E-Mail-Adresse festhält.
Justin
Fügen Sie möglicherweise einen Workflow / Code hinzu, der die tägliche Bereinigung von Benutzernamen ausführt, die beispielsweise seit 2 Tagen nicht bestätigt wurden.
Colin
1
Danke für den Kommentar. Meine Gedanken wären, wenn Sie versuchen würden, ein Konto auf einer Website zu erstellen und Ihr Benutzername übernommen wurde, würden Sie in 2 Tagen erneut zurückkehren und es erneut versuchen? Meine Gedanken sind höchstwahrscheinlich nicht. Entweder haben Sie am selben Tag ein neues Konto mit einem anderen Benutzernamen erstellt oder Sie haben sich nicht die Mühe gemacht, zur Website zurückzukehren, weil Sie nicht herausfinden konnten, wie Sie sich registrieren sollen, und die Website "zu kompliziert" war.
Justin
8
Um fortzufahren, was Colin sagt, können Sie möglicherweise davon ausgehen, dass es wahrscheinlich in Ordnung ist, wenn jemand versucht, sich mit demselben Benutzernamen und einer anderen E-Mail-Adresse erneut zu registrieren und nicht auf die Bestätigungsnachricht geantwortet hat. Möglicherweise stellen Sie fest, dass die Domain in der E-Mail korrekt ist, der Benutzername jedoch falsch geschrieben wurde. Auf diese Weise können Sie weiter feststellen, wann jemand einen Fehler gemacht hat.
Richard Lucas
1
Ich mag die Idee wirklich, Benutzern die erneute Registrierung zu ermöglichen, die ihre Kontoinformationen noch nicht bestätigt haben. Ich denke, diese Designlösung ist besser als meine ursprünglich vorgeschlagene technische Lösung. Von allen anderen zu hören, dass das Ändern dieser Standardbrowserfunktionalität eine schlechte Idee war, musste ich hören, um eine bessere Lösung zu finden.
Justin
7

Sie können jquery verwenden

HTML-Datei

<input id="email" name="email">

JQuery-Code

$('#email').bind('copy paste', function (e) {
        e.preventDefault();
    });
Sunil Garg
quelle
6

Wenn Sie die @ boycs- Antwort erweitern, würde ich empfehlen, auch "on" zu verwenden.

$('body').on('copy paste', 'input', function (e) { e.preventDefault(); });
e3matheus
quelle
Diese Methode ist nützlich, wenn Sie das Skript auf dynamisch hinzugefügte Formularelemente anwenden möchten.
Matthew
3

Wenn Sie 2 E-Mail-Felder verwenden müssen und Bedenken haben, dass der Benutzer dieselbe falsch eingegebene E-Mail von Feld 1 in Feld 2 falsch einfügt, würde ich sagen, dass eine Warnung (oder etwas subtileres) angezeigt wird, wenn der Benutzer etwas in das zweite E-Mail-Feld einfügt

document.querySelector('input.email-confirm').onpaste = function(e) {
    alert('Are you sure the email you\'ve entered is correct?');
}

Auf diese Weise deaktivieren Sie das Einfügen nicht. Sie erinnern sie lediglich freundlich daran, zu überprüfen, was sie vermutlich in das erste Feld eingegeben und dann in das zweite Feld eingefügt haben.

Möglicherweise ist jedoch nur ein einziges E-Mail-Feld mit aktivierter automatischer Vervollständigung erforderlich. Möglicherweise haben sie ihre E-Mail-Adresse irgendwann auf einer anderen Website korrekt ausgefüllt, und der Browser schlägt vor, das Feld mit dieser E-Mail-Adresse auszufüllen

<input type="email" name="email" required autocomplete="email">
shunryu111
quelle
2

Sie können dem Eingabefeld einen "Keydown" -Listener hinzufügen, um festzustellen, ob die Tasten Strg + V gedrückt werden, und in diesem Fall das Ereignis stoppen oder den Wert des Eingabefelds auf '' setzen.

Das würde jedoch nicht mit Rechtsklick und Einfügen oder Einfügen aus dem Menü Bearbeiten des Browsers umgehen. Möglicherweise müssen Sie dem Keydown-Listener einen Zähler für die "letzte Länge" hinzufügen und in einem Intervall die aktuelle Länge des Felds überprüfen, um festzustellen, ob sie seit dem letzten Tastendruck zunimmt.

Beides wird jedoch nicht empfohlen. Formularfelder mit deaktiviertem Einfügen sind äußerst frustrierend. Ich kann meine E-Mail beim ersten Mal korrekt eingeben, daher behalte ich mir das Recht vor, sie in das zweite Feld einzufügen.

Kevin
quelle
Kein Rechtsklick oder gar etwas von Äpfeln, Unix oder Strg-Ins, und wie wäre es mit iPhones?
Martlark
Ich bin auch kein großer Fan davon, das Eingabefeld zu deaktivieren, da ich das selbst frustrierend finde. Aber was sind die anderen Optionen, um diese Art von Benutzerfehler zu stoppen? Oder welche Lösung führt zu den am wenigsten falsch ausgefüllten Benutzerregistrierungen? Es scheint etwas ärgerlich, eine E-Mail-Adresse erneut manuell eingeben zu müssen, aber wenn dadurch frustrierte potenzielle Kunden gerettet werden sollen, würde ich Benutzer lieber dazu zwingen, etwas manuell in ein Eingabefeld einzugeben. Ich denke, es ist keine große Unannehmlichkeit, und die Menge an Frustration, die jemand vor einem einfachen Fehler bewahren könnte, könnte es noch schlimmer machen. Gedanken?
Justin
2

Fügen Sie Ihrem Registrierungsprozess einen zweiten Schritt hinzu. Erste Seite wie gewohnt, aber beim Neuladen eine zweite Seite anzeigen und die E-Mail erneut fragen. Wenn es so wichtig ist, kann der Benutzer damit umgehen.

Alsciende
quelle
1

von

Einige schlagen möglicherweise vor, Javascript zu verwenden, um die Aktionen der Benutzer zu erfassen, z. B. das Klicken mit der rechten Maustaste oder die Tastenkombinationen Strg + C / Strg + V und das anschließende Stoppen des Vorgangs. Dies ist jedoch offensichtlich nicht die beste oder einfachste Lösung. Die Lösung ist zusammen mit einigen Ereigniserfassungen mit Javascript in die Eigenschaften des Eingabefelds selbst integriert.

Um die automatische Vervollständigung des Browsers zu deaktivieren, fügen Sie einfach das Attribut zum Eingabefeld hinzu. Es sollte ungefähr so ​​aussehen:

<input type="text" autocomplete="off">

Wenn Sie das Kopieren und Einfügen für dieses Feld verweigern möchten, fügen Sie einfach das Javascript-Ereignis hinzu, mit dem Aufrufe oncopy, onpaste und oncut erfasst werden, und lassen Sie sie wie folgt falsch zurückgeben:

<input type="text" oncopy="return false;" onpaste="return false;" oncut="return false;">

Der nächste Schritt ist die Verwendung von onselectstart, um die Inhaltsauswahl des Eingabefelds für den Benutzer zu verweigern. Seien Sie jedoch gewarnt: Dies funktioniert nur für Internet Explorer. Der Rest der oben genannten Funktionen funktioniert hervorragend in allen gängigen Browsern: Internet Explorer, Mozilla Firefox, Apple Safari (zumindest unter Windows) und Google Chrome.

Vaichidrewar
quelle
Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Kev
yaah, ich werde mich das nächste Mal
darum
1
Warum nicht gleich anfangen, indem wir beschreiben, was "sehr schön erklärt" wird? So bekommst du Upvotes und bessere Repräsentanten :)
Kev
Welche Rechtfertigung kann es geben, um die automatische Vervollständigung auszuschalten (zu versuchen)? "Wir hassen unsere Benutzer!" ? Wenn Sie versuchen, der Feind des Benutzers zu sein, werden sie Sie hassen, während sie am Ende noch gewinnen, weil sie den Browser steuern.
Jan Hertsens
1

Überprüfen Sie die Gültigkeit des MX-Datensatzes des Hosts der angegebenen E-Mail. Dies kann Fehler rechts vom @ -Zeichen beseitigen.

Sie können dies mit einem AJAX-Aufruf vor dem Senden und / oder auf der Serverseite nach dem Senden des Formulars tun.

max
quelle
1

Mit jquery können Sie das Kopieren, Einfügen und Ausschneiden vermeiden

$('.textboxClass').on('copy paste cut', function(e) {
    e.preventDefault();
});
Krishna
quelle
Vielen Dank. Das hat wirklich so funktioniert, wie es sollte.
Jürgen
1

Ich benutze diese Vanilla JS-Lösung:

const element = document.getElementById('textfield')
element.addEventListener('paste', e =>  e.preventDefault())
Damjan Pavlica
quelle
1

Mit Jquery können Sie dies mit einer einfachen Codeline tun.

HTML:

<input id="email" name="email">

Code:

$(email).on('paste', false);

JSfiddle: https://jsfiddle.net/ZjR9P/2/

Julius
quelle
0

Einfache Lösung: Kehren Sie einfach den Registrierungsprozess um: Anstatt eine Bestätigung am Ende des Registrierungsprozesses zu verlangen, fordern Sie eine Bestätigung am Anfang an! Das heißt, der Registrierungsprozess begann mit einem einfachen Formular, in dem Sie nach der E-Mail-Adresse und nichts anderem gefragt wurden. Nach dem Absenden wird eine E-Mail mit einem Link zu einer Bestätigungsseite gesendet, die für die versendete E-Mail-Adresse eindeutig ist. Der Benutzer wechselt zu dieser Seite, und der Rest der Informationen für die Registrierung (Benutzername, vollständiger Name usw.) wird angefordert.

Dies ist einfach, da die Website vor der Bestätigung nicht einmal etwas speichern muss. Die E-Mail-Adresse kann mit einem Schlüssel verschlüsselt und als Teil der Adresse der Bestätigungsseite angehängt werden.

SP Arif Sahari Wibowo
quelle
0

Ich habe etwas Ähnliches für http://bookmarkchamp.com gemacht - dort wollte ich erkennen, wann ein Benutzer etwas in ein HTML-Feld kopiert hat. Die Implementierung, die ich mir ausgedacht habe, bestand darin, das Feld ständig zu überprüfen, um festzustellen, ob zu irgendeinem Zeitpunkt plötzlich eine ganze Menge Text darin war.

Mit anderen Worten: Wenn vor einer Millisekunde noch kein Text vorhanden war und jetzt mehr als 5 Zeichen vorhanden sind, hat der Benutzer wahrscheinlich etwas in das Feld eingefügt.

Wenn Sie möchten, dass dies in Bookmarkchamp funktioniert (Sie müssen registriert sein), fügen Sie eine URL in das URL-Feld ein (oder ziehen Sie eine URL per Drag & Drop hinein).

Ivan Maeder
quelle
0

Ich würde das Problem der Bestätigung einer E-Mail-Adresse folgendermaßen lösen:

  1. Bevor Sie den Hauptprozess durchlaufen - beispielsweise die Registrierung des Benutzers -, bitten Sie ihn zunächst, seine E-Mail-Adresse einzugeben.
  2. Generieren Sie einen eindeutigen Code und senden Sie ihn an diese E-Mail-Adresse.
  3. Wenn der Benutzer die richtige E-Mail-Adresse eingegeben hat, erhält er den Code.
  4. Der Benutzer muss diesen Code zusammen mit seiner E-Mail-Adresse und den anderen erforderlichen Informationen eingeben, damit er die Registrierung abschließen kann. - Bitte beachten Sie, dass wenn sie diesmal eine falsche E-Mail-Adresse (oder einen falschen Code) eingeben, die nicht mit dem Code übereinstimmt, die Registrierung nicht durchgeführt wird und der Benutzer sofort informiert wird.
  5. Wenn die E-Mail-Adresse, der Code und andere Registrierungsinformationen korrekt eingegeben wurden, ist die Registrierung abgeschlossen und der Benutzer kann das System sofort verwenden. - Sie müssen nicht auf eine andere E-Mail-Adresse antworten, um deren Konto zu aktivieren

Zur besseren Sicherheit sollte der Code eine begrenzte Lebensdauer haben und nur einmal im Registrierungsprozess zugelassen werden. Um böswillige Roboteranwendungen zu verhindern, ist es außerdem besser, den ersten Schritt mit Captcha oder einem ähnlichen Mechanismus zu begleiten.

Majix
quelle
0

Sie können die Option zum Kopieren und Einfügen von jQuery über das folgende Skript deaktivieren. jQuery ("input"). attr ("onpaste", "return false;");

von durch Verwendung des folgenden Attributs oppaste in den Eingabefeldern.

onpaste = "return false;"

Tapas Talukder
quelle
-1
Hope below code will work :

<!--Disable Copy And Paste-->
<script language='JavaScript1.2'>
function disableselect(e){
return false
}
function reEnable(){
return true
}
document.onselectstart=new Function ("return false")
if (window.sidebar){
document.onmousedown=disableselect
document.onclick=reEnable
}
</script>
Jignesh Vachhani
quelle