Как установить / снять все флажки с помощью Jquery и использовать функцию .change () для каждого флажка для обновления базы данных? - PullRequest
0 голосов
/ 23 мая 2011

У меня есть форма, которая содержит флажки.Когда каждый флажок установлен или снят, он выполняет функцию .change, которая вызывает функцию .post.Эта .post функция запускает PHP-скрипт, который обновляет базу данных, которая устанавливает статус 1 (проверено) или 0 (не проверено).

Это прекрасно работает, когда я проверяю или снимаю каждый флажок один за другим, но когда я пытаюсь использовать jquery-функцию check / uncheck-all, которая проверяет или снимает флажок каждый из этих флажков одновременно, это выглядит какхотя функция .change не обрабатывается для каждого измененного флажка, и база данных не обновляется.

Вот код, который «прослушивает» для .change:

    $('.location_check').change( function () {

        // If the checkbox has been changed to "checked", then run the job to set the db to 1 for that row
        if ($(this).is(':checked')) {
            var $report_f = $(this).attr("name");
            $.post('processes/updateLocationReportFlag.php', { record: $report_f, value: 1 });
        }

        // If the checkbox has been changed to "not checked", then run the job to set the db to 0 for that row
        if ($(this).is(':not(:checked)')) {
            var $report_f = $(this).attr("name");
            $.post('processes/updateLocationReportFlag.php', { record: $report_f, value: 0 });
        }

    });

Воткод, который я использую, чтобы проверить / снять все галочки:

    $('#location_checkall').click( function () {

            $(this).parents('#locations_frame').find(':checkbox').attr('checked', this.checked);

    });

1 Ответ

0 голосов
/ 23 мая 2011

Попробуйте:

$(this).parents('#locations_frame').find(':checkbox').attr('checked', this.checked).change();

... хотя, возможно, было бы целесообразно добавить серверный скрипт для обработки нескольких значений флажков одновременно.Многие браузеры имеют ограничения на количество соединений, которые могут быть открыты за один раз, и если у вас много флажков, вы можете столкнуться с этим пределом, с неожиданными и нежелательными результатами.

Возможно, вы также захотите посмотреть в JQuery делегат функция для повышения производительности.Это позволяет вам иметь один обработчик события, которому событие «делегировано», а не один на элемент DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...