jQuery ruft Textbereichstext ab

486

Vor kurzem habe ich angefangen, mit jQuery zu spielen, und habe einige Tutorials verfolgt. Jetzt fühle ich mich ein wenig kompetent mit der Verwendung (es ist ziemlich einfach) und ich dachte, es wäre cool, wenn ich eine "Konsole" auf meiner Webseite erstellen könnte (wie in, drücken Sie die "Taste" wie in FPS Spielen . etc.), und dann Ajax selbst zurück zum Server, um Sachen zu machen.

Ich dachte ursprünglich, der beste Weg wäre, den Text einfach in den Textbereich zu bekommen und ihn dann zu teilen, oder sollte ich das Schlüsselereignis verwenden, den zurückgegebenen Schlüsselcode in ein ASCII-Zeichen konvertieren, das Zeichen an eine Zeichenfolge anhängen und die Zeichenfolge an senden der Server (dann leeren Sie die Zeichenfolge).

Ich konnte keine Informationen zum Abrufen von Text aus einem Textbereich finden. Ich erhielt lediglich Keyup-Informationen. Wie kann ich den zurückgegebenen Schlüsselcode in ein ASCII-Zeichen konvertieren?

RodgerB
quelle

Antworten:

713

Warum sollten Sie Tastenanschläge in Text konvertieren? Fügen Sie eine Schaltfläche hinzu, die den Text innerhalb des Textbereichs beim Klicken an den Server sendet. Sie können den Text mithilfe des value-Attributs abrufen, auf das im vorherigen Poster hingewiesen wurde, oder mithilfe der jQuery-API:

$('input#mybutton').click(function() {
    var text = $('textarea#mytextarea').val();
    //send to server and process response
});
Eran Galperin
quelle
2
Weil der Textbereich mehr als nur den benötigten Text enthalten würde. (Es ist Konsole, Visualisierung der Eingabeaufforderung). Danke für Infos zur Val-Funktion. :)
RodgerB
Sie können den Text mit Javascript verarbeiten. Was bringt es, die Tastenanschläge zurückzugeben?
Eran Galperin
Der Punkt ist, imo, das Erhalten des Tastenanschlagcodes wäre effizienter als das Teilen des Textbereichs durch ein Trennzeichen (Bild eines möglicherweise großen Textarrays).
RodgerB
2
Entschuldigung, ich kann mir das Szenario nicht vorstellen, in dem das wahr wäre ... Wenn Sie Ihren ursprünglichen Beitrag bearbeitet und ein Beispiel hinzugefügt hätten, würde dies möglicherweise den Leuten helfen, die versuchen zu antworten
Eran Galperin
Ich habe den 'Textarea'-Teil vor der HTML-Tag-ID
vergessen
36

Wo es oft die Textfunktion ist, die Sie verwenden (z. B. in divs usw.), ist es für den Textbereich val

erhalten:

$('#myTextBox').val();

einstellen:

$('#myTextBox').val('new value');
Thomas Koelle
quelle
24

Sie sollten ein div haben, das nur die Konsolennachrichten enthält, dh vorherige Befehle und deren Ausgabe. Und darunter platzieren Sie eine Eingabe oder einen Textbereich, der nur den Befehl enthält, den Sie eingeben.

-------------------------------
| consle output ...           |
| more output                 |
| prevous commands and data   |
-------------------------------
> This is an input box.

Auf diese Weise senden Sie einfach den Wert des Eingabefelds zur Verarbeitung an den Server und hängen das Ergebnis an die Konsolennachrichten div an.

p3drosola
quelle
Ja, genau das, was ich dachte. Es ist die einzige saubere Lösung, bei der weder die Eingabe aus der Ausgabe analysiert wird (dumm zu versuchen - was ist, wenn der Benutzer über eine "Ausgabe" tippt), noch versucht wird, eine Zeichenfolge aus Tastenanschlagereignissen aufzubauen (dumm zu versuchen) - Was ist mit Backspaces usw.?).
Nick Perkins
3
Ein weiteres XY-Problem bei SO. Dies ist eindeutig die beste Lösung für das "X" seines Problems.
Reimius
14

Normalerweise ist es die value-Eigenschaft

testArea.value

Oder fehlt mir etwas in dem, was du brauchst?

sblundy
quelle
Ich hoffe tatsächlich, dass ein textverändertes Ereignis oder etwas in der Richtung aufgerufen wird (ich könnte dies sowieso ziemlich einfach mit dem Keyup-Ereignis tun). Ich denke, ich werde mich an das Keyup-Ereignis halten, aber kennen Sie eine Möglichkeit, den Keycode in ein ASCII-Zeichen umzuwandeln? Vielen Dank. :)
RodgerB
8

Ich habe herausgefunden, dass ich den keyCode des Ereignisses mithilfe der folgenden Funktion in ein Zeichen konvertieren kann:

var char = String.fromCharCode(v_code);

Von dort würde ich dann das Zeichen an eine Zeichenfolge anhängen und wenn die Eingabetaste gedrückt wird, die Zeichenfolge an den Server senden. Es tut mir leid, wenn meine Frage etwas kryptisch schien und der Titel etwas bedeutet, das fast völlig vom Thema abweicht. Es ist früh am Morgen und ich habe noch nicht gefrühstückt;).

Vielen Dank für all Ihre Hilfe.

RodgerB
quelle
7

Denkt, das Wort "Konsole" sorgt für Verwirrung.

Wenn Sie eine Voll- / Halbduplex-Konsole im alten Stil emulieren möchten, verwenden Sie Folgendes:

$('console').keyup(function(event){
    $.get("url", { keyCode: event.which }, ... );
    return true;
});

event.which hat die Taste, die gedrückt wurde. Für die Rücktastebehandlung event.which === 8.

Eric
quelle
2

der beste Weg: $ ('# myTextBox'). val ('neuer Wert'). trim ();

Abolfazl Miadian
quelle
0

Lesen Sie den Textbereichswert und die Code-Zeichen-Konvertierung:

Und unten schöne Quake wie Konsole nur auf Div-s :)

Kamil Kiełczewski
quelle
0

Sie können Textbereichsdaten nach Name und ID abrufen

// by name
<textarea name="comment"></textarea>
let text_area_data = $('textarea[name="comment"]').val();

// by id
<textarea id="comment" name="comment"></textarea>
let text_area_data = $('textarea#comment').val();
user889030
quelle