Хотите повторно использовать функцию jQuery, создавая функцию для использования снова и снова

#php #jquery #dry

#php #jquery #dry

Вопрос:

 <script>
    // Roti6p20tk
    $(function () {
        $("#distributedPacketForRoti6p20tk, #bonusForRoti6p20tk, "  
            "#replaceForRoti6p20tk, #returnForRoti6p20tk").on("keydown keyup", sumForRoti6p20tk);
        function sumForRoti6p20tk() {
            $("#totalSalePacketForRoti6p20tk").val(Number($("#distributedPacketForRoti6p20tk").val())
                - Number($("#bonusForRoti6p20tk").val()) -
                Number($("#replaceForRoti6p20tk").val()) - Number($("#returnForRoti6p20tk").val())
            );

            $("#salesInAmountForRoti6p20tk").val(Number($("#totalSalePacketForRoti6p20tk").val()) * 20
            );
        }
    });

    // Roti4p14tk
    $(function () {
        $("#distributedPacketForRoti4p14tk, #bonusForRoti4p14tk, "  
            "#replaceForRoti4p14tk, #returnForRoti4p14tk").on("keydown keyup", sumForRoti4p14tk);
        function sumForRoti4p14tk() {
            $("#totalSalePacketForRoti4p14tk").val(Number($("#distributedPacketForRoti4p14tk").val())
                - Number($("#bonusForRoti4p14tk").val()) -
                Number($("#replaceForRoti4p14tk").val())
                - Number($("#returnForRoti4p14tk").val())
            );

            $("#salesInAmountForRoti4p14tk").val(Number($("#totalSalePacketForRoti4p14tk").val()) * 14
            );
        }
    });

    // final sum For Roti
    $(function () {
        $("#extSaleForRoti6p20tk, #extSalesForRoti4p14tk, "  
            " #dueReceivedForRoti, #dueInAmountForRoti, "  
            "#expAndComForRoti").on("keydown keyup", finalsumForRoti);
        function finalsumForRoti() {
            $("#totalSaleAmountForRoti").val(Number($("#extSaleForRoti6p20tk").val())
                  Number($("#extSalesForRoti4p14tk").val())  
                Number($("#salesInAmountForRoti6p20tk").val())
                  Number($("#salesInAmountForRoti4p14tk").val())
            );

            $("#totalReceivedForRoti").val(Number($("#totalSaleAmountForRoti").val())
                  Number($("#dueReceivedForRoti").val())
                - Number($("#dueInAmountForRoti").val())
                - Number($("#expAndComForRoti").val())
            );
        }
    });

</script>
  

Вот html-код

Это мой HTML-код с функцией Jquery

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

Эти вышеупомянутые функции будут делать то же самое, что и я отправляю параметр. Как повторно использовать функцию jquery, не копируя и не вставляя ее снова и снова? Можете ли вы показать мне способ или учебник?

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

Комментарии:

1. Javascript выполняется на клиенте, PHP — на сервере: два разных мира. Итак, нет, вы не можете использовать метод JavaScript внутри класса PHP.

2. @trincot Я думаю, он имеет в виду, что PHP создает страницу, и он хочет использовать класс PHP для генерации различных функций Javascript на основе параметров.

3. Могло бы быть, @Barmar, но, перечитывая последнюю фразу вопроса, я не могу не думать, что OP ожидает, что метод JavaScript будет повторно использоваться PHP.

4. @trincot Как повторно использовать функцию jquery, не копируя и не вставляя ее снова и снова?

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

Ответ №1:

Вы можете написать функцию Javascript, которая принимает список идентификаторов в качестве аргумента.

 function sumForFields(totalid, salesid, inputids, salesmultiplier) {
    $(inputids.join(',')).on("keydown keyup", function() {
        var total = Number($(inputids[0]).val());
        for (var i = 1; i < inputids.length; i  ) {
            total -= Number($(inputids[i]).val());
        }
        $(totalid).val(total);
        $(salesid).val(total * salesmultiplier);
    });
}
  

Затем вы можете написать:

 sumForFields('#totalSalePacketForRoti6p20tk', '#salesInAmountForRoti6p20tk', 
            ['#distributedPacketForRoti6p20tk', '#bonusForRoti6p20tk', '#replaceForRoti6p20tk', '#returnForRoti6p20tk'], 
            20);
  

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

Комментарии:

1. положительный отзыв — но я бы хотел, чтобы OP поделился своим фактическим HTML, поскольку использование IDS может даже не понадобиться в зависимости от того, как вещи вложены.

2. @Barmarsumforfields(‘#Итоговый пакет для роти6р20тк’, ‘#Salesinamount для РОТИ6Р20ТК’, [‘#Распределенный пакет для РОТИ6Р20ТК’, ‘#Бонус для РОТИ6Р20ТК’, ‘#заменяемость6р20тк’, ‘#возвращение6р20тк’], 20 );