Ich habe eine textarea
, wo Benutzer etwas auf die spezifische Art eingeben muss, aber der Text, der in textarea
zeigt, muss anders sein als derjenige, den er eintippt. So grundlegend brauche ich eine Art von Funktion, die immer Schlüssel genannt wird gedrückt. Ich habe versucht, es mit onkeydown
und onkeyup
zu tun, aber ich ohne Erfolg.JavaScript Textmanipulation während der Eingabe?
Ich werde ein Beispiel geben, um es besser zu erklären. "letters-pressed" ist der Text, den der Benutzer wirklich eintippt, und "letters-showed" sind diejenigen, die im textarea
angezeigt werden.
Buchstaben gepresste: „Hallo, können Sie mir bitte mit etwas helfen Es ist nicht so schwer“
Buchstaben-zeigt: „Hallo ,, Ich habe nicht Ihre Hilfe will Es ist nicht so schwer“
Also, was ich will, ist, wenn ich das zweite „Komma“ nach „Hallo“ drücken, dass mein Text beginnt die Pre-scripted Text in Textbereich zeigt, die als die anders sein wird ich getippt.
Und wenn ich das "Fragezeichen" benutze, möchte ich den echten Text wieder anzeigen. Alles zwischen dem zweiten "Komma" und dem "Fragezeichen" muss in einer Variablen gespeichert werden, die ich später verwenden werde.
var hiddenText = ", i dont want your help";
UPDATE: Ich bin in der Nähe, es Arbeit zu machen, aber zur Zeit funktioniert es ein wenig „langsam“. Eingegebener Buchstabe wird zuerst angezeigt, und nach Eingabe des zweiten Buchstabens wird der erste Buchstabe gefiltert. Ich brauche es sofort, also wird die Funktion aufgerufen, bevor der Buchstabe im Textfeld angezeigt wird. Ich habe es geschafft, indem ich Strings in ein Array einfügte und dann den aktuellen Buchstaben mit dem gleichen Index-Buchstaben im vordefinierten String verglich. Und wenn es das gleiche ist, lass es, wenn es anders ist, den Buchstaben von der vorgeskripteten Zeichenkette erhalten.
function filter() {
// $ufText is unfiltered text which is typed in.
// $psTextArray is pre-scripted text.
// $filtered text is, well, filtered text.
let $ufTextArray = [];
let $psTextArray = [];
let $filteredText = "";
let $ufText = $("#txt").val();
$ufTextArray = $ufText.split('');
console.log($ufTextArray);
let $psText = "Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?Hello, can you please help me with something?";
$psTextArray = $psText.split('');
for (let i=0; i<$ufText.length ; i++) {
if ($ufTextArray[i] != $psTextArray[i]) {
$filteredText = $filteredText + $psTextArray[i];
$("#txt").val($filteredText);
} else {
$filteredText = $filteredText + $ufTextArray[i];
$("#txt").val($filteredText);
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<textarea id="txt" cols="80" rows="2" onkeydown="filter()"></textarea>
</body>
</html>
Was passiert, wenn der Benutzer „Guten Morgen ...“ kein Komma, oder Typen geben? Beachten Sie, dass die Verwendung von Schlüsselereignissen zum Ändern des Inhalts des Felds, in das der Benutzer eintippt, kompliziert wird, da Sie die Cursorposition verfolgen müssen, wenn der Benutzer den Anfang oder die Mitte einer vorhandenen Zeichenfolge bearbeitet. – nnnnnn
Der springende Punkt ist es, den Text in einer bestimmten Art und Weise einzugeben, wenn es nicht richtig eingegeben wird, wird es nicht funktionieren, was den Benutzer zwingen wird, einzugeben, was getippt werden muss. –