gpt4 book ai didi

Javascript getElementsByName 在 PHP 循环中不起作用

转载 作者:行者123 更新时间:2023-12-03 07:09:31 25 4
gpt4 key购买 nike

我有以下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 中有一个函数。该函数的目的是检查用户插入的新数量是否不应超过旧数量(我使用此方法将数量从一个商店转移到另一个商店)。

另请注意,我已在输入字段内指定了名称 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 来测试是否收集了正确的值,并且它似乎可以根据需要工作,但不能用于验证新数量是否超过旧数量,似乎它只适用于前 4 行,然后它卡住并开始验证任何行中的新数量与第一个旧数量行..我希望这对您有意义。

任何替代方案或建议将不胜感激。

谢谢大佬

最佳答案

代码的一个问题是,每次您在 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>

关于Javascript getElementsByName 在 PHP 循环中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36666374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com