jQuery ottiene il testo di textarea


486

Di recente ho iniziato a giocare con jQuery e ho seguito un paio di tutorial. Ora mi sento un po 'competente nell'usarlo (è abbastanza facile) e ho pensato che sarebbe bello se fossi in grado di creare una "console" sulla mia pagina web (come in, premi il tasto `come fai nei giochi FPS , ecc.), e poi riavviare Ajax sul server per fare le cose.

Inizialmente pensavo che il modo migliore fosse quello di ottenere il testo all'interno dell'area di testo e quindi dividerlo, o dovrei usare l'evento keyup, convertire il codice chiave restituito in un carattere ASCII, aggiungere il carattere a una stringa e inviare la stringa a il server (quindi svuotare la stringa).

Non sono riuscito a trovare alcuna informazione su come ottenere testo da un'area di testo, tutto quello che ho ottenuto sono informazioni di keyup. Inoltre, come posso convertire il codice chiave restituito in un carattere ASCII?

Risposte:


713

Perché vorresti convertire i tasti premuti in testo? Aggiungi un pulsante che invia il testo all'interno dell'area di testo al server quando si fa clic. È possibile ottenere il testo utilizzando l'attributo value come precedentemente indicato dal poster oppure utilizzando l'API di jQuery:

$('input#mybutton').click(function() {
    var text = $('textarea#mytextarea').val();
    //send to server and process response
});

2
Perché la textarea conterrebbe più del solo testo necessario. (è console, visualizza il prompt dei comandi). Grazie per informazioni sulla funzione val. :)
RodgerB,

È possibile elaborare il testo utilizzando JavaScript. Qual è lo scopo di restituire i codici dei tasti chiave?
Eran Galperin,

Il punto è, imo, che ottenere il codice del tratto chiave sarebbe più efficiente quindi dividere l'area di testo per un delimitatore (immagina una matrice di testo possibilmente grande).
RodgerB,

2
Spiacenti, non riesco a visualizzare lo scenario in cui sarebbe vero ... forse se hai modificato il tuo post originale e aggiunto un esempio, aiuterebbe le persone a cercare di rispondere
Eran Galperin,

Ho dimenticato la parte 'textarea' davanti al tag id html
Yasith Prabuddhaka

36

Dove è spesso la funzione di testo che usi (ad es. In div ecc), allora per l'area di testo è val

ottenere:

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

impostato:

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

24

Dovresti avere un div che contenga solo i messaggi della console, ovvero i comandi precedenti e il loro output. E sotto inserisci un input o textarea che contiene solo il comando che stai digitando.

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

In questo modo è sufficiente inviare il valore della casella di input al server per l'elaborazione e aggiungere il risultato al div dei messaggi della console.


Sì, esattamente quello che stavo pensando. È l'unica soluzione pulita che non comporta né l'analisi dell'input dall'output (sciocco da provare - cosa succede se l'utente digita un po 'di "output"), o il tentativo di creare una stringa da eventi di battitura (sciocco da provare - che dire di backspaces, ecc?).
Nick Perkins,

3
Un altro problema XY su SO. Questa è chiaramente la migliore soluzione alla "X" del suo problema.
Reimius,

14

Normalmente, è la proprietà value

testArea.value

O c'è qualcosa che mi manca in quello che ti serve?


In realtà spero che venga invocato un evento modificato o qualcosa del genere (potrei farlo abbastanza facilmente con l'evento keyup). Penso che continuerò a utilizzare l'evento keyup, ma conosci un modo per convertire il keycode in un carattere ASCII? Grazie. :)
RodgerB,

8

Ho capito che posso convertire il keyCode dell'evento in un personaggio usando la seguente funzione:

var char = String.fromCharCode(v_code);

Da lì aggiungerei quindi il carattere a una stringa e, quando viene premuto il tasto Invio, invio la stringa al server. Mi dispiace se la mia domanda mi è sembrata in qualche modo criptica, e il titolo significa qualcosa di quasi completamente fuori tema, è mattina presto e non ho ancora fatto colazione;).

Grazie per tutto il vostro aiuto ragazzi.


7

Pensa che la parola "console" stia causando confusione.

Se desideri emulare una console full / half duplex vecchio stile, utilizzeresti qualcosa del genere:

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

event.che ha il tasto premuto. Per la gestione del backspace, event.which === 8.



0

Leggi valore textarea e conversione code-char:

E qui sotto Quake come console solo su div-s :)


0

puoi ottenere dati textarea per nome e ID

// 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();
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.