jQuery mendapatkan textarea text

486

Baru-baru ini saya mulai bermain dengan jQuery, dan telah mengikuti beberapa tutorial. Sekarang saya merasa sedikit kompeten untuk menggunakannya (ini cukup mudah), dan saya pikir akan lebih baik jika saya bisa membuat 'konsol' di halaman web saya (seperti, Anda menekan tombol `seperti yang Anda lakukan di game FPS , dll), dan kemudian Ajax sendiri kembali ke server untuk melakukan hal-hal.

Saya awalnya berpikir cara terbaik adalah dengan memasukkan teks ke dalam textarea, dan kemudian membaginya, atau haruskah saya menggunakan event keyup, mengonversi kode kunci yang dikembalikan ke karakter ASCII, menambahkan karakter ke string dan mengirim string ke server (lalu kosongkan string).

Saya tidak dapat menemukan informasi tentang mendapatkan teks dari textarea, yang saya dapatkan adalah informasi keyup. Juga, bagaimana saya bisa mengubah kode kunci kembali ke karakter ASCII?

RodgerB
sumber

Jawaban:

713

Mengapa Anda ingin mengonversi pukulan tombol menjadi teks? Tambahkan tombol yang mengirim teks di dalam textarea ke server ketika diklik. Anda bisa mendapatkan teks menggunakan atribut nilai seperti yang ditunjukkan poster sebelumnya, atau menggunakan API jQuery:

$('input#mybutton').click(function() {
    var text = $('textarea#mytextarea').val();
    //send to server and process response
});
Eran Galperin
sumber
2
Karena textarea akan mengandung lebih dari sekedar teks yang dibutuhkan. (itu konsol, visualisasikan command prompt). Terima kasih atas info tentang fungsi val. :)
RodgerB
Anda dapat memproses teks menggunakan javascript. Apa gunanya mengembalikan kode kunci stroke?
Eran Galperin
Intinya adalah, imo, mendapatkan kode stroke kunci akan lebih efisien daripada membagi textarea dengan pembatas (gambar mungkin array teks yang besar).
RodgerB
2
Maaf, saya gagal memvisualisasikan skenario di mana itu akan benar ... mungkin jika Anda mengedit posting asli Anda dan menambahkan contoh itu akan membantu orang yang mencoba menjawab
Eran Galperin
Saya lupa bagian 'textarea' di depan id tag html
Yasith Prabuddhaka
36

Di mana seringkali fungsi teks yang Anda gunakan (misalnya dalam divs dll) maka untuk area teks itu val

Dapatkan:

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

set:

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

Anda harus memiliki div yang hanya berisi pesan konsol, yaitu, perintah sebelumnya dan hasilnya. Dan di bawahnya masukkan input atau textarea yang hanya memegang perintah yang Anda ketikkan.

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

Dengan begitu Anda hanya mengirim nilai kotak input ke server untuk diproses, dan menambahkan hasilnya ke div pesan konsol.

p3drosola
sumber
Ya, persis apa yang saya pikirkan. Ini adalah satu-satunya solusi bersih yang tidak melibatkan penguraian input dari output (bodoh untuk mencoba - bagaimana jika pengguna mengetik lebih dari beberapa "output"), atau mencoba membangun string dari peristiwa keystroke (bodoh untuk mencoba - bagaimana dengan backspaces, dll?).
Nick Perkins
3
Masalah XY lain pada SO. Ini jelas merupakan solusi terbaik untuk 'X' dari masalahnya.
Reimius
14

Biasanya, ini adalah properti nilai

testArea.value

Atau ada sesuatu yang saya lewatkan dari yang Anda butuhkan?

merah muda
sumber
Saya benar-benar berharap acara yang diubah teks atau sesuatu di sepanjang baris akan dipanggil (saya bisa melakukan ini dengan cukup mudah dengan acara keyup). Saya pikir saya akan tetap menggunakan acara keyup, tetapi apakah Anda tahu cara untuk mengubah kode kunci menjadi char ASCII? Terima kasih. :)
RodgerB
8

Saya telah menemukan bahwa saya dapat mengonversi kode kunci acara ke karakter dengan menggunakan fungsi berikut:

var char = String.fromCharCode(v_code);

Dari sana saya kemudian akan menambahkan karakter ke string, dan ketika tombol enter ditekan mengirim string ke server. Saya minta maaf jika pertanyaan saya tampak agak samar, dan judul yang berarti sesuatu yang hampir sepenuhnya di luar topik, masih pagi dan saya belum sarapan;).

Terima kasiih atas semua bantuan kalian.

RodgerB
sumber
7

Memikirkan kata "konsol" yang menyebabkan kebingungan.

Jika Anda ingin meniru konsol dupleks penuh / setengah gaya lama, Anda akan menggunakan sesuatu seperti ini:

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

event.yang memiliki tombol yang ditekan. Untuk penanganan backspace, event.which === 8.

eric
sumber
2

cara terbaik: $ ('# myTextBox'). val ('nilai baru'). trim ();

Abolfazl Miadian
sumber
0

Baca nilai textarea dan konversi kode-char:

Dan di bawah ini Quake like console on div-s saja :)

Kamil Kiełczewski
sumber
0

Anda bisa mendapatkan data teks data dengan nama dan 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();
pengguna889030
sumber