我需要捕获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()
,但似乎都没有。
如何获取发件人输入的值?
答案 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.toElement
和event.relatedTarget
。
(当然,将它们与.value
或.val()
)