代码之家  ›  专栏  ›  技术社区  ›  Marek

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

  •  5
  • Marek  · 技术社区  · 14 年前

    我需要捕获keyup事件,以便在用户键入输入时提供实时验证(只有当输入失去焦点时才会激发change事件)。

    我在获取触发EVNT的输入的编辑值时遇到问题。

    该代码也在计时器上运行,以防止用户键入时多次调用(仅每500毫秒触发一次)。

    我有几个“priceinput”类的输入,并将其附加到每个键控事件上,如下所示:

    <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 回复  |  直到 14 年前
        1
  •  6
  •   Pointy    14 年前

    问题是在超时函数中,您丢失了对输入元素的“this”引用。尝试如下操作:

    $('.priceinput').keyup(function(e) {
      var $input = $(this);
      clearTimeout(timer);
      timer = setTimeout(function() { 
        var value = $input.val();
        $.getJSON( ... );
      }, 500);
    });
    
        2
  •  1
  •   Yvo    14 年前

    在Internet Explorer中应该是 event.srcElement 在Firefox中 event.target .
    或尝试 event.toElement event.relatedTarget .

    (当然,把它们和 .value .val() )