jQuery change() не работает если значение изменено используя jQuery

15 821 просмотр 5 комментариев 1 августа 2012

Делая сайт-каталог в котором нужно было реализовать ajax фильтр по каталогу - форма, в которой много-много всяких radiobutton-ов и checkbox-ов, при нажатии на которые сразу должны подгружаться отфильтрованные товары. Для этого я на форму повесил .change и все отлично работало до тех пор пока мне не понадобилось добавить ползунки для изменения диапазона цен наглядным образом, с ползунками проблем не было, они в callback функции возвращали мне новый диапазон цен, которые я планировал вставить в hidden input, но не тут то было, значения вставлялись, но событие .change не срабатывало. Немного погуглив нашел решение...

И так раньше у меня был примерно такой код.

$(document).ready(function () {
    
    $('#filtres_form').change(function () {
        alert("change сработал")
    });
    
    $("#filtres_form input#min_price").val(100500);
});

Но никакого алерта я не видел. Вот решение:

$(document).ready(function () {

    $('#filtres_form').change(function () {
        alert("change сработал")
    });

    $("#filtres_form input#min_price").val(100500).change();
});

В общем после изменения значения нужно тупо дописать .change() и все работает

5 комментариев

подобная проблема, но данный способ не помог =(
$(document).ready(function() {
$("#sel").change(function () {
alert (’сработал’);
});
$("#sel").change();
});
Richard Ferlow
4 июля 2014
Так событие change() во второй раз нужно вешать на то место где данные меняться будут. т.е. к примеру они по клику меняются - туда и нужно это впихивать.
Александр Савиных
19 марта 2017
Спасибо
Помогло, спасибо!
Админ убери debug bar от laravel!))
Все запросы ведь видны) Причем на этой странице где я оставил коммент

Вы можете оставить комментарий