添加一个Smarty变量,其总值为三个组合框之和


Adding a Smarty variable with total value of the sum of three combo box

我有这段代码用于添加(求和)三个组合值,我想用结果(resultado)求和smarty变量中的val"precioinal",但我不知道该怎么做。有什么帮助吗?非常感谢。

$(document).ready(function(e) {
        $('#form1').change(function() {
           var obj = {};
           var string = '';
           var precioinicial  = "{$productes_precio}";
           var sum  = 0;
           // Grupo 1
           if ($("select option[name=embroider]").is(':checked')) {
              var n1 = $("select option[name=embroider]:checked").val();
              sum += parseFloat(n1);
           }
            // Grupo 2
           if ($("select option[name=sole]").is(':checked')) {
              var n1 = $("select option[name=sole]:checked").val();
              sum  += parseFloat(n1);
           }
          // Grupo 3
           if ($("select option[name=taps]").is(':checked')) {
              var n1 = $("select option[name=taps]:checked").val();
              sum += parseFloat(n1);
           }
           $('#resultado').val(sum);
        });
});

您没有指定代码是在.js文件中还是在smarty处理的模板中。如果是第一种情况,您至少应该在模板文件(可能是头)的某个位置声明precional,即

<html>
  <head>
  ...
    <script>
       var precioinicial  = "{$productes_precio}";
     </script>
  </head>
  <body>
  ...

然后在脚本中,您只需要使用变量并将其分配给sum:

$('#form1').change(function() {
           var obj = {};
           var string = '';
           var sum  = parseFloat(precioinicial);

如果代码的其余部分是正确的,那么它应该按预期工作。

您发布的代码是Javascript。因此,它在客户端上执行。但是Smarty是在服务器上执行的。根据你的问题,我想说你手头有一个架构问题。

如果你真的想把值传递给smarty,你必须通过Ajax来完成(尽管这就引出了一个问题,那就是你为什么要这么做,除非你想把smarty生成的内容传递回Ajax响应中)。