Не получить последнее значение из TextBox - PullRequest
0 голосов
/ 02 декабря 2011

Я пытаюсь реализовать следующее в coffeescript / jquery

-> Когда пользователь печатает, убедитесь, что, если textBox пуст (или имеет текст «Написать комментарий ...»), скрыть кнопку «Добавить комментарий». Еще покажите кнопку «Добавить комментарий»

enter image description here

enter image description here

Однако я сталкиваюсь с проблемой, из-за которой val (), возвращаемая мне из текстового поля, всегда на одну клавишу позади.

Например, если я введу «sad» в поле, target.val () возвращает мне только «sa».

enter image description here

Как получить самое последнее значение в текстовом поле при вводе?

Моя реализация, как показано ниже

events:
  "keydown .comment_area": "commenting"

commenting: (e) ->
  target = @$(e.currentTarget)

  //target.val() is not returning me the latest character entered in the box
  if $.trim(target.val()) == "" or $.trim(target.val()) =="Write a comment..."
    //hide the 'add' button
    @$('.add_comment').hide()
  else
    //show the 'add' button
    @$('.add_comment').show()

Ответы [ 2 ]

5 голосов
/ 02 декабря 2011

Привязка к событию keyup вместо keydown.

См. порядок событий клавиатуры .

0 голосов
/ 05 декабря 2011

Используйте событие keyup или keypress: keydown запускается до того, как компьютер фактически поместил символ в текстовое поле, тогда как два других запускаются после этого: keypress сразу после и keyupкогда ключ физически поднят.keypress, я думаю, срабатывает для каждого символа, вставленного в текстовое поле (т. Е. Когда вы нажимаете и удерживаете, а символ повторяется, он срабатывает отдельно), тогда как keyup срабатывает только после нажатия клавиши, так что если вынажмите и удерживайте клавишу, она будет срабатывать только после того, как эта клавиша будет поднята, а не для каждого вставленного символа.

Кстати, в coffeescript скобки не нужны для вызовов функций - только когда вы не передаетев любых аргументах.Например:

@$(e.currentTarget) -> @$ e.currentTarget

$.trim(target.val()) -> $.trim target.val()

Также я заметил, что вы иногда упоминаете $ с @ тогда как иногда вы используете глобальный jQuery - есть ли причина для этого?Кажется, что это должно быть последовательным.

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