JavaScript:如何从keyup事件中获取发送者输入元素的值?

时间:2010-02-28 16:18:05

标签: javascript jquery events input

我需要捕获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).valthis.val()e.target.val(),但似乎都没有。

如何获取发件人输入的值?

2 个答案:

答案 0 :(得分:6)

问题是在你的超时函数中,你已经丢失了对输入元素的“this”引用。尝试这样的事情:

$('.priceinput').keyup(function(e) {
  var $input = $(this);
  clearTimeout(timer);
  timer = setTimeout(function() { 
    var value = $input.val();
    $.getJSON( ... );
  }, 500);
});

答案 1 :(得分:1)

在Internet Explorer中,它应该是event.srcElement,在Firefox event.target中 或者尝试event.toElementevent.relatedTarget

(当然,将它们与.value.val()

组合在一起