尝试使多个复选框相乘,然后在有多个产品的地方添加。是否可以针对数据库中的行数在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的用法有所不同,我不确定如何解决此问题。
答案 0 :(得分:0)
如treyBake所述,如果您需要将信息从PHP传递到jQuery,再传递回PHP等,请使用隐藏的DOM元素并发出Ajax请求。
这也将允许您实时更新数据。
好的,例如,您可以将数字计数隐藏在隐藏的输入中
<input type="hidden" value="<?php echo $count;?> " name="countrows" id="countrows">
现在您可以在jQuery中检索:
var counter = $("#countrows").val();
通过is.checked获取选中复选框的值:
var x = $("#checkbox").is(":checked");