JavaScript: Как получить значение входного элемента отправителя от keyup события?

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

Я испытываю затруднения при получении отредактированного значения входа, который запустил evnt.

Код также работает на таймере для предотвращения множественных вызовов, когда пользователь вводит (запускает только каждые 500 мс).

Я имею несколько исходных данных с классом "priceinput" и присоединяю к keyup событию каждого как следующее:

<script language="javascript" type="text/javascript">
    var timer;
    $(document).ready(function() 
    {
        $(".priceinput").each(function() 
        {
            $(this).keyup(function(e) 
            { 
                clearTimeout(timer);
                timer = setTimeout(function() 
                {     
                //how to get the value of the input element that was changed?  
                var value = ???;
                    $.getJSON('/Validator/IsValidInput', { input: value },
                    function(response) 
                    {
                      //indicate if input is correct
                    });
                }, 500);
            });
        });
     });
</script>

Для получения входного значения отправителя я попробовал $(this).val, this.val(), e.target.val() но ни один, кажется, не работает.

Как я добираюсь, значение отправителя ввело?

5
задан Marek 28 February 2010 в 16:18
поделиться

2 ответа

Проблема в том, что в вашей функции тайм-аута вы потеряли ссылку this на входной элемент. Попробуйте что-то вроде этого:

$('.priceinput').keyup(function(e) {
  var $input = $(this);
  clearTimeout(timer);
  timer = setTimeout(function() { 
    var value = $input.val();
    $.getJSON( ... );
  }, 500);
});
6
ответ дан 14 December 2019 в 08:48
поделиться

В Internet Explorer это должно быть event.srcElement , в Firefox event.target .
Или попробуйте event.toElement и event.relatedTarget .

(и, конечно, объедините их с .value или .val () )

1
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: