【发布时间】:2019-06-24 21:14:20
【问题描述】:
尝试让多个复选框相乘并在有多个产品的地方相加。是否可以在 jquery 中针对数据库中的行数使用 for 语句,或者在没有它的情况下运行它?
我已将我必须的代码缩减为一个紧凑版本,以将复选框相加并与前一页中的 POST 乘数相乘。
现在这个脚本不会为任何产品运行并且徘徊什么可以用来在客户端和服务器端脚本之间架起桥梁。
我对在 jquery 函数中使用 php 变量所需的方法感到困惑。我想过使用onclick 来调用单击复选框的函数,但我试图在准备好的DOM 上运行它。如果有人能用最简单的方式告诉我这怎么可能,我会很乐意做更多的研究。
<?php
//CONNECTION, QUERY AND MISC ///
$count = mysqli_num_rows($result);
$i = 1;
while ($row = mysqli_fetch_assoc($result))
{
$kilo1 = $row['kilo1'];
$kilo2 = $row['kilo2'];
$price1 = $row['price1'];
$price2 = $row['price2'];
$price3 = $row['price3'];
$price4 = $row['price4'];
$multiplier = 2;
$qri = "qr"."$i";
$userdaily = "userdaily"."$i";
$usertotal = "usertotal"."$i";
$pricef1 = "price1"."$i";
$pricef2 = "price2"."$i";
echo "<form enctype='multipart/form-data' name='contactform' method='POST' action='something.php'>";
echo "<input type='hidden' name='multiplier' id='multiplier' value='$multiplier'>";
echo "<input type='checkbox' name='checkbox1' id='$qri' value='$price1'>";
echo "<input type='checkbox' name='checkbox2' id='$qri' value='$price2'>";
echo "<input type='checkbox' name='checkbox3' id='$qri' value='$price3'
class='insure'>";
echo "<input type='checkbox' name='checkbox4' id='$qri' value='$price4'
class='insure'>";
echo "<input type='checkbox' name='checkbox5' id='$qri' value='$kilo1'
class='kilo'>";
echo "<input type='checkbox' name='checkbox6' id='$qri' value='$kilo2'
class='kilo'>";
/////TOTALS VISIBLE AND HIDDEN/////
echo "<span id='$userdaily'></span>";
echo "<span id='$usertotal'></span>";
echo "<input type='hidden' name='pricef1' id='$pricef1' value=''>";
echo "<input type='hidden' name='pricef2' id='$pricef2' value=''>";
echo "<input type='submit'>";
if($i%4==0 || $i == $count) echo '<br>';
$i++;
}
?>
<script>
$(function()
{
$("input.kilo").change(function()
{
$("input.kilo").not(this).prop("checked", false);
});
$("input.insure").change(function()
{
$("input.insure").not(this).prop("checked", false);
});
$(document).ready(function()
{
//get the values of the selected options
var counter = parseInt("<?php echo $count;?>");
for (i = 1; i <= counter; i++)
{
let v = $.map($("input[id^='qr+i+']:checked"), function(t)
{
return parseFloat($(t).val());
});
let s = v.reduce((a, b) => a + b);
//sum them up to a daily total
console.log(v);
$("#<?php echo $userdaily;?>").text('R' + s + '/day');
$("#<?php echo $usertotal;?>").text('R' + s *
parseFloat($("#multiplier").val()) + '/day');
$("#<?php echo $pricef1;?>").val(s);
$("#<?php echo $pricef2;?>").val(s * parseFloat($("#multiplier").val()));
}
});
});
</script>
我有一个产品清单,每个产品都有每日总计和总天数,每个产品的价格完全不同。我试图在小提琴中创建它,它可以在不使用变量的情况下找到,我意识到 Jquery 和 php 的用途不同,我不知道如何解决这个问题。
【问题讨论】:
-
混合 PHP 和 JS 是个坏主意 - 它们的执行方式不同,因此可能导致意外行为。最好使用隐藏的 DOM 元素并将数据标签传递给 JS
-
是否可以在 Jquery 中使用数据库中的行数来创建一个将 i 的值更改为特定数字的循环?即行数?
-
这有点像我想要做的,但我不知道怎么做,除了
var counter = parseInt(<?php echo $count;?>)然后for (i = 1; i <= counter; i++)然后可能是let v = $.map($("input[id^='qr+i+']:checked"), function(t)
标签: php jquery variables addition multiplication