Php 从给定的最大值中减去并输出数值输入值

Php 从给定的最大值中减去并输出数值输入值,php,javascript,jquery,Php,Javascript,Jquery,我有多个按div分组的输入文本字段: <div class="container0"> <input class="containerItem0" name="containerItem[0][0]" id="containerItem_0_0" type="text"> <input class="containerItem1" name="containerItem[0][1]" id="containerItem_0_1" type="text">

我有多个按div分组的输入文本字段:

<div class="container0">
<input class="containerItem0" name="containerItem[0][0]" id="containerItem_0_0" type="text">  
<input class="containerItem1" name="containerItem[0][1]" id="containerItem_0_1" type="text">
</div

<div class="container1">
<input class="containerItem0" name="containerItem[1][0]" id="containerItem_1_0" type="text">
<input class="containerItem1" name="containerItem[1][1]" id="containerItem_1_1" type="text">
</div>

<div class="container2">
<input class="containerItem0" name="containerItem[2][0]" id="containerItem_2_0" type="text">
<input class="containerItem1" name="containerItem[2][1]" id="containerItem_2_1" type="text">
</div>
我想完成的事情:
每个容器项都有一个单独的最大金额。
假设containerItem0=100,containerItem1=200,containerItem2=300。
现在,当我在containerItem0的输入字段中输入一个数值时,例如20。它应该更新一个可能位于输入字段后面的值,在本例中为80。
它不仅应该更新我刚刚输入数值的输入字段后面的值,还应该更新所有其他containerItem0后面的值

我尝试的

// php part
// Create variables for use in jquery for the max values for the containerItems
$jqueryVars="";
$j=0;
// containerItems is an array I get with the numberOrdered value which equals the maximum number allowed
foreach ($containerItems as $key => $value) {
    $jqueryVars .= "var maxContainerItem".$j." = ".$value['NumberOrdered'].";\n";
    $j++;
}


// jQuery part:
// Calculate left amount of container items.
'$(document).change(function() {
    '.$jqueryVars.'
    var sumOfValues = 0;
    //I USED >>.containerItem0<< in this case to see if it works, however this should be variable
    $(".containerItem0").each(function(){
       sumOfValues+=$(this).val();
    });
    alert(sumOfValues);
});
//php部分
//为containerItems的最大值创建用于jquery的变量
$jqueryVars=“”;
$j=0;
//containerItems是我得到的一个数组,其numberOrdered值等于允许的最大值
foreach($containerItems作为$key=>$value){
$jqueryVars.=“var maxContainerItem”。$j.“=”$value['NumberOrdered']。;\n”;
$j++;
}
//jQuery部分:
//计算容器项目的剩余数量。
“$(文档).change(函数(){
“.$jqueryVars。”
var sumOfValues=0;
//我使用了>>.containerItem0您使用的是
$(this).val()
,它返回
输入
字段的值。这些值实际上是字符串,因此对它们使用
+
将它们连接起来

如果在添加值之前对其进行分析,则应产生您所期望的结果:

$(document).change(function() {
  var sumOfValues = 0;
  $(".containerItem0").each(function() {
     sumOfValues += parseFloat($(this).val());
  });
  alert(sumOfValues);
});
您使用的是
$(this).val()
,它返回
输入
字段的值。这些值实际上是字符串,因此对它们使用
+
将它们连接起来

如果在添加值之前对其进行分析,则应产生您所期望的结果:

$(document).change(function() {
  var sumOfValues = 0;
  $(".containerItem0").each(function() {
     sumOfValues += parseFloat($(this).val());
  });
  alert(sumOfValues);
});

如果我使用parseFloat(),我会得到NaN作为警告消息。你知道为什么会发生这种情况吗?我正在使用你提供的代码段。我的错…我首先必须检查$(this).val()是否是一个数字,而不是NaN:val1=(isNaN($(this.val())| |!$(this.val())?0:$(this.val();如果我使用parseFloat()我得到NaN作为警报消息。知道为什么会发生这种情况吗?我正在使用您提供的代码段。我的错…我首先必须检查$(this).val()是否是一个数字,而不是NaN:val1=(isNaN($(this).val())| |!$(this).val())?0:$(this).val();