Как использовать onkeyup и onkeydown для тега ввода?

У меня есть поле ввода, и я хочу сделать некоторые вычисления в зависимости от нажатия и нажатия клавиш. Я пытался использовать функции onkeyup и onkeydown, но когда я нажимаю клавишу на клавиатуре, в консоли печатается как «keyup», так и «keydown». Есть ли какая-либо другая функция, которая различает события keyup и keydown отдельно? Мои входные теги находятся внутри таблицы html. это мой код

  $('table input').on('keyup', function(){
      console.info("keyup");
  });

  $('table input').on('keydown', function(){
      console.info("keydown");
  });

Изменить «ввод» на «keydown» или «keyup»?

Lewis 11.06.2019 17:48

Я пробовал. но это не работает. @Льюис

Rhugveda Desai 11.06.2019 17:49

Нет причин, по которым этого не должно быть. Что-то еще не так с вашим кодом, если это не работает. Посмотрите документацию Клавиатурное событие на MDN.

Lewis 11.06.2019 17:50

@RhugvedaDesai Попробуйте использовать мой код ... Если он не работает, не могли бы вы попробовать создать минимальный воспроизводимый пример?

Praveen Kumar Purushothaman 11.06.2019 17:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
2 381
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

изменить input на keyup:

$('table input').on('keyup', function(){
    var parent = $(this).closest('tr');
    var value = parent.find('[name = "item_value[]"]').val();
    var amount = parent.find('[name = "quantity[]"]').val();
    var total_cost = value * amount;
    parent.find('[name = "total_cost[]"]').val(total_cost);
    total_value = total_value + total_cost;
    document.getElementById('total').value = total_value;
});

Подробнее о ключ

Ответ принят как подходящий

Предлагаю не смешивать jQuery и чистый JavaScript. Все, что вам нужно, это добавить keyup keydown вместо input:

$('table input').on('keyup keydown', function() {
  var parent = $(this).closest('tr');
  var value = parent.find('[name = "item_value[]"]').val();
  var amount = parent.find('[name = "quantity[]"]').val();
  var total_cost = value * amount;
  parent.find('[name = "total_cost[]"]').val(total_cost);
  total_value = total_value + total_cost;
  $('#total').val(total_value);
});

JQuery — это JavaScript.

Jacob Gaiski 11.06.2019 17:55

@JacobGaiski Я имел в виду способ ... Вы знаете, что я фанат JavaScript. ? Как лучше я мог объяснить это в своем ответе? Может быть, чтобы не отставать от манеры письма или что-то в этом роде? Или заменить это на Синтаксис jQuery и чистый синтаксис JavaScript?

Praveen Kumar Purushothaman 11.06.2019 17:56

@PraveenKumarPurushothaman Я думаю, вы говорили, что если они используют jQuery, они могут использовать его везде для согласованности, а не переключаться между использованием и неиспользованием. То есть, нет смысла смешивать .val() и .value.

Lewis 11.06.2019 17:59

Я обновил свой вопрос. Пожалуйста, проверьте! @PraveenKumarPurushothaman

Rhugveda Desai 11.06.2019 18:03

@RhugvedaDesai Код, который вы отправили, действительно выполняется. Если бы вы смогли показать нам минимальный воспроизводимый пример, мы бы увидели, где что-то пойдет не так, например, селектор или что-то еще, так что...

Praveen Kumar Purushothaman 11.06.2019 18:16

Вам не нужны keyup и keydown, оба будут запускаться с одним и тем же кодом клавиши.

Вы должны использовать один или другой. Разница будет в задержке обработки.

Например, если вы используете KeyUp, в зависимости от времени, в течение которого клавиша удерживается нажатой, KeyUp сработает только после того, как эта клавиша будет отпущена, в отличие от KeyDown.

Ссылаясь на W3Schools, вы можете добиться этого с помощью: (Где код ключа = восьмеричное значение, определенное в ASCII (https://www.genuinecoder.com/wp-content/uploads/2012/07/asciifull.gif)

(Кроме того, запустив этот пример, вы заметите, что быстрые keyDowns и keyUps могут вызвать конфликты в процессе обработки. Вы должны использовать один или другой, а не оба одновременно.)

$("input").keyup(function(e){
   alert(e.keyCode);
    $("input").css("background-color", "pink");
});
$("input").keydown(function(e){
    alert(e.keyCode);
    $("input").css("background-color", "pink");
});

Другие вопросы по теме