Javascript - 计算两个相关字段之间的剩余部分

时间:2014-07-06 00:08:02

标签: javascript php mysql function input

首先,我想计算表格中两个字段之间的剩余数量(数量);换句话说,我将实际QTY 输入文本字段作为只读,其值从mysql表中获取并且 user QTY 输入文本字段取自用户输入。我想要的是根据用户QTY 中的用户输入减少实际QTY

我有以下代码:

$query2 = "SELECT * from store_00";
$result2 = mysql_query($query2);
$n = array();
while($row2 = mysql_fetch_assoc($result2)){
echo "<td align=center>".$row2['item_no']."</td><td align=center>";
?>
<input type="text" id="fname" value="<?php echo $row2['qty'] ?>" readonly="readonly"/>
<?php
echo "</td>";

for($i=0;$i<$num;$i++){
echo "<td align=center>"; ?><input autofocus="autofocus" onchange="myFunction(this.value);" type="text" name="n[]" value=""/><?php echo "</td>";
}
echo "</tr>";
}

和Javascript代码:

function myFunction(v)
{
var x=document.getElementById("fname");
x.value = x.value - v;
}

以上将首次正确输出实际QTY ,但是当用户将值更改回0时,它将从新的实际QTY 值开始递减这给了一个错误的剩余...所以必须有办法在某处保存一个临时的实际QTY 值。

无论如何我知道代码看起来很糟糕,我还是JS的新手,不知道如何在两个字段之间创建一个简单的关系和剩余的计算。

1 个答案:

答案 0 :(得分:1)

由于你没有使用jQuery,而你的问题是关于javascript的,我已经改变了一些事情来做你想做的事情。此外,id应该是唯一的,而类不必是唯一的。由于您的ID具有相同的值以产生问题,同样如您所述,您不会存储原始值,这是您的主要问题。有很多方法,但我更喜欢这个,因为我觉得它很容易理解。

$n = array();
echo "<table>";
while($row2 = mysql_fetch_assoc($result2)){
    echo "<tr class='inputs'>";
    echo "<td align=center> ".$row2['item_no']." </td><td align=center>";
    echo "<input class='original' type='text' id='c".$row2['item_no']."' value='".$row2['qty']."' readonly='readonly'/>";
    echo "</td>";
    for($i=0;$i<$num;$i++){
        echo "<td align=center>";
        echo "<input class='d".$row2['item_no']."'  data-goto='c".$row2['item_no']."' data-original = '".$row2['qty']."' autofocus='autofocus' onchange='myFunction(this);' type='text' name='n[]' value='0'/>";
        echo "</td>";
    }
    echo "</tr>";
}
echo "</table>";

使用html5,您可以使用data-前缀定义自定义标记,并且可以使用getAttribute方法为该对象访问它们。

<script>  
    function myFunction(v){
        var minus = 0;
        var mutualInputs = document.getElementsByClassName(v.className);
        for (var i = 0; i < mutualInputs.length; ++i) {
            var item = mutualInputs[i];  
            minus = minus + parseInt(item.value);
        }
        var original = v.getAttribute('data-original');
        var x = document.getElementById(v.getAttribute('data-goto'));
        x.value = original - minus;
    }
</script>

ps:在此示例中,您的item_no必须是唯一的。

相关问题