【问题标题】:how to return php variable to Jquery function to be used to multiply values如何将php变量返回给Jquery函数以用于乘法运算
【发布时间】: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(&lt;?php echo $count;?&gt;) 然后for (i = 1; i &lt;= counter; i++) 然后可能是let v = $.map($("input[id^='qr+i+']:checked"), function(t)

标签: php jquery variables addition multiplication


【解决方案1】:

正如 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");

【讨论】:

  • 我没想到会这样使用它,谢谢,我会记住这一点,下一次我需要做这样的事情。
  • 你为什么提到var x = $("#checkbox").is(":checked");,因为我目前使用$("input.kilo").change(function() { $("input.kilo").not(this).prop("checked", false); }); 来选择特定的复选框,因为并非所有选项都可以选择,我想我可以使用单选按钮,但不幸的是,我没有选择但使用复选框。
  • 每个复选框也有不同的值
  • @Websimpleton :有几种方法可以获取选中的复选框的值。你的方法有效吗?
  • 目前没有,因为我正在使用 id,但是对于每一行,id 都以增量 i 变化,例如 qr1、qr2 qr3 等,因此要选择它们,我正在尝试类似$(#qr` + i +)` 其中 i 用于for (i = 1, i &lt;=counter, i++)
猜你喜欢
  • 2014-07-23
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
相关资源
最近更新 更多