Я должен получить 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()
но ни один, кажется, не работает.
Как я добираюсь, значение отправителя ввело?
Проблема в том, что в вашей функции тайм-аута вы потеряли ссылку 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 ()
)