我有以下 PHP代码:
//some code
$query = "SELECT * from store_00_transfers";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
echo "<tr><td align=center width=19%>{$row['item_no']}</td><td align=center><input type='text' value='{$row['qty']}' name='cqty[]' readonly ></td><td align=center><input type='number' min='0' name='nqty[]' onChange='check_not_large(this.value);' value='0'></td></tr>";
}
//rest of code
现在,您可以看到onChange
内部有一个功能。该函数用于检查用户为新数量插入的数字是否不应超过旧数量(我使用此方法将qty从一个商店转移到另一个商店)。
另请注意,我在输入字段中指定了名称cqty[]
和nqty[]
。
我有 javascript代码:
<script>
function check_not_large(res) {
var old = document.getElementsByName("cqty[]");
var type= document.getElementsByName("nqty[]");
for(var i = 0; i < old.length; i++) {
if(type[i].value > old[i].value){
alert('Error : Qty Inserted should be Less than QTY found in Store !');
alert(type[i].value);
alert(old[i].value);
return type[i].value = 0;
}
}
}
</script>
我在javascript 中使用了 alert
来测试是否收集了正确的值并且它似乎可以根据需要运行,但不是用于验证新的qty是否超过旧的数量,它似乎只适用于前4行然后它卡住并开始验证任何行中的新数量与第一个旧的qty行..我希望这对你有意义。
任何替代或建议都会受到赞赏。
谢谢盖伊
答案 0 :(得分:1)
你的代码的一个问题是,每次你在nqty和onchange上输入值时,都会调用函数check_not_large函数,它不仅验证当前行的nqty和cqty值,还验证所有以前的nqty和cqty行值。如果你的目的是仅检查当前行的nqty值是否大于cqty值,更简洁的代码将为每个nqty和cqty元素提供一些唯一的id值。相同的代码可以如下所示进行优化。
PHP代码
$query = "SELECT * from store_00_transfers";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
echo "<tr>
<td align=center width=19%>{$row['item_no']}</td>
<td align=center>
//instead of name attribute you can give an id here and also assuming $row['item_no'] is unique
<input type='text' value='{$row['qty']}' id='cqty{$row['item_no']}' readonly >//assuming item_no is unique
</td>
<td align=center>
//instead of name attribute you can give an id here and also assuming $row['item_no'] is unique
<input type='number' min='0' id="nqty{$row['item_no']}" onChange='check_not_large({$row['item_no']});' value='0'>
</td>
</tr>";
}
Javascript代码
<script>
function check_not_large(item_no) {
var cqtvVal=document.getElementById("cqtv"+item_no).value;
var nqtvVal=document.getElementById("nqtv"+item_no).value;
//checking if typed value is greater than old value
if(nqtvVal>cqtvVal)
{
//write whatever code you want to do like give a warning message or make the nqtv value reset to zero etc
}
}
</script>