#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 );