jQuery отримати текстовий текст


486

Нещодавно я почав грати в jQuery і переглянув пару навчальних посібників. Тепер я відчуваю себе трохи компетентним з його використанням (це досить легко), і я вважав, що було б здорово, якби мені вдалося зробити "консоль" на своїй веб-сторінці (як, наприклад, ти натискаєш клавішу `, як ти робиш в іграх FPS , і т.д.), а потім поверніть його Ajax назад на сервер для того, щоб робити речі.

Спочатку я вважав, що найкращим способом буде просто дістати текст всередині текстової області, а потім розділити його, або я повинен використовувати подію клавіатури, перетворити код, що повертається до символу ASCII, додати символ до рядка та надіслати рядок сервер (потім порожнє рядок).

Я не міг знайти жодної інформації про отримання тексту з текстової області, все, що я отримав, - це інформація про клавіатуру. Крім того, як я можу перетворити код, повернутий у символ ASCII?

Відповіді:


713

Чому ви хочете перетворити ключові штрихи в текст? Додайте кнопку, яка надсилає текст всередині текстової області на сервер при натисканні на нього. Ви можете отримати текст, використовуючи атрибут значення, як попередньо вказано на плакаті, або за допомогою API jQuery:

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

2
Тому що текстова область міститиме більше, ніж просто потрібний текст. (це консоль, візуалізуйте командний рядок). Дякуємо за інформацію про функцію val. :)
RodgerB

Ви можете обробити текст за допомогою JavaScript. Який сенс повернути ключові коди обведення?
Еран Гальперін,

Справа в тому, що, отримання ключового коду обведення було б більш ефективним, ніж розділення текстової області на роздільник (зображте, можливо, великий масив тексту).
RodgerB

2
Вибачте, мені не вдається уявити сценарій, у якому це було б правдою ... можливо, якщо ви відредагували своє оригінальне повідомлення та додали приклад, це допоможе людям, які намагаються відповісти
Еран Гальперін,

Я забув частину "textarea" перед ідентифікатором html-тегу
Yasith Prabuddhaka

36

Там, де часто використовується текстова функція, яку ви використовуєте (наприклад, у divs тощо), тоді для області тексту вона є val

отримати:

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

набір:

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

24

У вас повинен бути div, який просто містить повідомлення консолі, тобто попередні команди та їх вихід. І під ним покладіть ввід або текстову область, яка просто виконує команду, яку ви вводите.

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

Таким чином, ви просто відправляєте значення поля введення на сервер для обробки та додаєте результат до консольного повідомлення div.


Так, саме те, що я думав. Це єдине чисте рішення, яке не передбачає ні розбору вхідних даних з виводу (нерозумно намагатися - що робити, якщо користувач набирає якийсь "вихід"), або намагається створити рядок із подій натискання клавіш (нерозумно намагатися - як щодо зворотних просторів тощо?).
Нік Перкінс

3
Ще одна проблема XY щодо SO. Це, очевидно, найкраще рішення «Х» його проблеми.
Реймій

14

Зазвичай це властивість значення

testArea.value

Або є щось, чого мені не вистачає в тому, що вам потрібно?


Я насправді сподіваюся, що подія, що змінилася в тексті, або щось по лінії буде викликано (я все одно міг би зробити це досить легко за допомогою події клавіатури). Думаю, я буду дотримуватися використання події клавіатури, але чи знаєте ви про спосіб перетворення коду клавіатури в діаграму ASCII? Дякую. :)
RodgerB

8

Я зрозумів, що я можу перетворити keyCode події в персонаж за допомогою наступної функції:

var char = String.fromCharCode(v_code);

Потім я додав би символ до рядка, а після натискання клавіші введення надішліть рядок на сервер. Вибачте, якщо моє запитання здавалося дещо криптовалютним, а назва означає щось майже абсолютно поза темою, це рано вранці, і я ще не снідав;).

Дякую за всю допомогу, хлопці.


7

Роздуми слово "консоль" викликає плутанину.

Якщо ви хочете імітувати повну / напівдуплексну консоль у старому стилі, ви використовуєте щось подібне:

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

event.which, яку було натиснуто клавішу. Для обробки зворотного простору, event.which === 8.



0

Прочитайте значення textarea та перетворення коду:

А нижче приємний Quake, як консоль лише у div-s :)


0

Ви можете отримати дані textarea за іменем та ідентифікатором

// 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();
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.