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

Мне нужно захватить событие 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(), но, похоже, ни один из них не работает.

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

Ответы [ 2 ]

6 голосов
/ 28 февраля 2010

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

$('.priceinput').keyup(function(e) {
  var $input = $(this);
  clearTimeout(timer);
  timer = setTimeout(function() { 
    var value = $input.val();
    $.getJSON( ... );
  }, 500);
});
1 голос
/ 28 февраля 2010

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

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

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