JQuery получить текстовый текст - PullRequest
457 голосов
/ 28 сентября 2008

Недавно я начал играть с jQuery и прошел несколько уроков. Теперь я чувствую себя немного компетентно с его использованием (это довольно легко), и я подумал, что было бы здорово, если бы я смог создать «консоль» на своей веб-странице (например, вы нажимаете клавишу «как» в FPS игры и т. Д.), А затем верните его на сервер Ajax для выполнения каких-либо задач.

Первоначально я думал, что лучшим способом будет просто получить текст внутри текстовой области, а затем разделить его, или я должен использовать событие keyup, преобразовать возвращаемый код ключа в символ ASCII, добавить символ в строку и отправить строка на сервер (затем очистите строку).

Я не смог найти никакой информации о получении текста из текстовой области, все, что я получил, это информацию о ключах. Кроме того, как я могу преобразовать возвращаемый код ключа в символ ASCII?

Ответы [ 8 ]

676 голосов
/ 28 сентября 2008

Почему вы хотите преобразовать нажатия клавиш в текст? Добавьте кнопку, которая отправляет текст внутри текстовой области на сервер при нажатии. Вы можете получить текст, используя атрибут value, как указывалось ранее, или используя API jQuery:

$('input#mybutton').click(function() {
    var text = $('textarea#mytextarea').val();
    //send to server and process response
});
33 голосов
/ 13 июня 2014

Если вы часто используете текстовую функцию (например, в divs и т. Д.), То для текстовой области это значение val

получить:

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

комплект:

$('#myTextBox').val('new value');
23 голосов
/ 06 июля 2010

У вас должен быть div, который просто содержит консольные сообщения, то есть предыдущие команды и их вывод. А внизу поместите ввод или текстовую область, которая просто содержит набираемую вами команду.

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

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

13 голосов
/ 28 сентября 2008

Обычно это значение свойства

testArea.value

Или что-то мне не хватает в том, что тебе нужно?

8 голосов
/ 28 сентября 2008

Я понял, что могу преобразовать keyCode события в символ, используя следующую функцию:

var char = String.fromCharCode(v_code);

После этого я бы добавил символ в строку, а когда нажата клавиша ввода, отправьте строку на сервер. Извините, если мой вопрос показался мне несколько загадочным, а заголовок означал что-то совершенно не по теме, сейчас раннее утро, и я еще не завтракал;).

Спасибо за вашу помощь, ребята.

7 голосов
/ 14 июня 2011

Метинкс, слово «консоль» вызывает путаницу.

Если вы хотите эмулировать полнодуплексную консоль старого стиля, вы должны использовать что-то вроде этого:

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

событие., Которое имеет нажатую клавишу. Для обработки возврата назад, event.which === 8.

0 голосов
/ 09 апреля 2019

Считать значение textarea и преобразование кода в символ:

function keys(e) {
  msg.innerHTML = `last key: ${String.fromCharCode(e.keyCode)}`
  
  if(e.key == 'Enter') {
    console.log('send: ', mycon.value);
    mycon.value='';
    e.preventDefault();
  }
}
Push enter to 'send'<br>
<textarea id='mycon' onkeydown="keys(event)"></textarea>

<div id="msg"></div>

А ниже приятно Quake как консоль только на div-овах:)

document.addEventListener('keyup', keys);

let conShow = false

function keys(e) {
  if (e.code == 'Backquote') {
    conShow = !conShow;
    mycon.classList.toggle("showcon");
  } else {
    if (conShow) {
      if (e.code == "Enter") {
        conTextOld.innerHTML+= '<br>' + conText.innerHTML;
        let command=conText.innerHTML.replace(/&nbsp;/g,' ');
        conText.innerHTML='';
        console.log('Send to server:', command); 
      } 
      else if (e.code == "Backspace") {
        conText.innerHTML = conText.innerText.slice(0, -1);
      } else if (e.code == "Space") {
        conText.innerHTML = conText.innerText + '&nbsp;'
      } else {
        conText.innerHTML = conText.innerText + e.key;
      }

    }
  }
}
body {
  margin: 0
}

.con {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: flex-start;
  width: 100%;
  height: 90px;
  background: rgba(255, 0, 0, 0.4);
  position: fixed;
  top: -90px;
  transition: top 0.5s ease-out 0.2s;
  font-family: monospace;
}

.showcon {
  top: 0px;
}

.conTextOld {
  color: white;
}

.line {
  display: flex;
  flex-direction: row;
}

.conText{   color: yellow; }

.carret {
  height: 20px;
  width: 10px;
  background: red;
  margin-left: 1px;
}

.start { color: red; margin-right: 2px}
Click here and Press tilde ` (and Enter for "send")

<div id="mycon" class="con">
  <div id='conTextOld' class='conTextOld'>Hello!</div>
  <div class="line">
    <div class='start'> > </div>
    <div id='conText' class="conText"></div>
    <div class='carret'></div>
  </div>
</div>
0 голосов
/ 25 ноября 2017

лучший способ: $ ('# myTextBox'). val ('новое значение'). trim ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...