Метод valQ (jQuery) возвращает слишком мало символов для события нажатия клавиши - PullRequest
2 голосов
/ 21 декабря 2011

В моей форме я добавляю одно текстовое поле ($("#seltxt")) и один div с текстом внутри.когда я выбираю div текст приходит в текстовое поле, это работает нормально.Теперь я добавил функцию keypress в #seltxt в событии нажатия клавиши. Я копирую текстовое поле в div.Но это становится на один персонаж меньше.

Пример:

div с текстом «manojgangwar», когда я нажимаю на div, «manojgangwar» копирует в #seltxt.Теперь предположим, что я пишу символ "manojgangwar123" в текстовом поле, а затем в div он только идет "manojgangwar12"

ниже - jQuery для захвата события нажатия клавиши

 //function to set text to div

$("#seltxt").keypress( function(event) {
   $('#' + objid).text($("input#seltxt").val());
});

Ответы [ 2 ]

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

Событие нажатия клавиши запускается, пока нажата клавиша, до того, как произошло поведение по умолчанию. Это позволяет сценариям отменять поведение по умолчанию (например, заполнение поля ввода) с помощью метода event.preventDefault().

Используйте событие keyup, если вам нужно событие, которое вызывается при изменении входного значения.

Кроме того, поскольку $("input#selText") указывает на себя, вы также можете использовать $(this).val(). Дальнейшая оптимизация будет состоять из использования this.value, который поддерживается повсеместно.

$("#seltxt").keyup( function(event) {
   $('#' + objid).text(this.value);
});

Заключительная записка о ключевых событиях

  • keydown - срабатывает один раз, сразу после нажатия клавиши. Может использоваться для предотвращения первого события по умолчанию.
  • keypress - возможно, запускается несколько раз, пока нажаты клавиши. Может использоваться для предотвращения поведения по умолчанию (keydown срабатывает только один раз, если вы удерживаете нажатой клавишу, поведение по умолчанию будет происходить, если вы не определите событие keypress)
  • keyup - срабатывает после отпускания ключа. Использование event.preventDefault() не может предотвратить изменение текста при вводе с клавиатуры.
1 голос
/ 21 декабря 2011

это работает ...

$("#seltxt").live("keyup", function(event) {
   $('#' + objid).text($(this).val());
});
...