首先,我想计算表单中两个字段之间的剩余QTY(数量);换句话说,我将实际数量输入文本字段设置为只读,其值是从mysql表中获取的,并且用户数量输入文本字段取自用户输入。我想要的只是根据用户在用户数量中输入的内容来减少实际数量。
我有以下代码:
$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;
}
上面的内容第一次会正确输出实际数量,但是当用户将值改回 0 时,它会从新的实际数量值开始递减这给出了错误的剩余...因此必须有一种方法可以将临时的实际数量值保存在某处。
无论如何,我知道代码看起来很糟糕,我对 JS 还很陌生,不知道如何在两个字段之间创建一个简单的关系和剩余计算。
最佳答案
由于您不使用 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
必须是唯一的。
关于Javascript - 计算两个相关字段之间的剩余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24591588/