JavaScript:如何从keyup事件中获取发送者输入元素的值?
我需要捕获keyup事件以在用户输入输入时提供实时validation(仅当输入失去焦点时才会触发更改事件)。
我无法获取触发evnt的输入的编辑值。
该代码还在定时器上运行,以防止在用户键入时多次调用(每500毫秒触发一次)。
我有几个输入类“priceinput”并附加到每个的keyup事件,如下所示:
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); }); }); });
为了获取发送者输入值,我尝试了$(this).val
, this.val()
, e.target.val()
但似乎都没有。
如何获取发件人输入的值?
问题是在你的超时函数中,你已经丢失了对输入元素的“this”引用。 尝试这样的事情:
$('.priceinput').keyup(function(e) { var $input = $(this); clearTimeout(timer); timer = setTimeout(function() { var value = $input.val(); $.getJSON( ... ); }, 500); });
在Internet Explorer中,它应该是event.srcElement
,在Firefox event.target
。
或者尝试event.toElement
和event.relatedTarget
。
(当然,将它们与.value
或.val()
结合起来)