- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下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/
第一个示例(type="button" 是故意的)应该可以工作: function saveChanges(form) { const id = docume
我试图通过本教程学习一些 JavaScript 并为我的网页制作一个模式 Building Your Own JavaScript Modal Plugin 当我意识到他通过 ID 捕获元素并且我有多
我有一个自动呈现的 HTML 表单,它使用输入字段的索引。 数量: 产品价格; 总行价格; 对于以下几行,id 和名称的索引增加,仅显示数量示例; 我想使用以下 JavaScript 来计算总
我是一个 javascript 新手,我已经尝试过这个。 #WoodNumInput { width:40px; } var i; var woodtypeAB = ["AB_W15_L10
请原谅我的极端天真……我正在尝试使用 getElementByName 方法执行 JavaScript,但本质上,当我到达该站点时,我希望在数量字段中输入 0(15 秒后)到达所述站点)。 这是我检查
这是我的 JavaScript: var crct_answrs = new Array(); var answrs = new Array(); function chec
以下代码旨在更改一个字段的颜色: Untitled Document var bkColor =
所以在 JS 中,我克隆了一个元素并更改了它的所有子元素 name 以更改它们的索引(例如 instanceActeurRole[0].siteId 变为 instanceActeurRole[ 3]
我正在使用一组这样的按钮: 14,5 29,0 43,5 58,0 72,5 我一直在尝试使用以下方法查找所选按钮的值: document.getElementsByName('aantal_pl
以下代码在按下按钮时执行。它可以很好地提醒 getElementsByName 数组的一个字符串,但是当引入循环时,它仍然仅提醒第一个字符串值,仅此而已: function checkvals() {
我正在为我制作一些自动求和输入计算器,但我遇到了问题,因为我不知道如何选择具有不同名称的多个输入。我知道我可以只使用“输入”而不是确切的名称,但我需要只对 5-6 个输入进行计算,而不是全部,所以请帮
Javascript 的 getElementsByName(...) 返回的值是否保证与它们在 DOM 中出现的顺序相同? 最佳答案 对于 getElementsByName(name), 名称
为什么下面的代码不起作用(不执行警报)? custom_table是html中的一些文件上传字段,长度为10。 var custom_table=document.getElementsByName(
我正在从事一个自动化项目,在该项目中我有一个带有搜索框的网络适配器,但没有搜索按钮,继续进行的唯一方法是按回车键。我发现之前的一个线程提供了通过 ID 获取文本框元素的解决方案,但是在这种情况下,每次
有没有一种方法可以在不从 DOM 根开始的情况下使用 getElementsByName。 例如,我有一个 div 元素,我想从该元素开始搜索。 如果不是,那么我是否必须编写自己的函数来递归地遍历子节
var elem=document.getElementsByName('lala'); alert(elem.length); 弹出警报0!?所以这使得下一个不起作用!? for(i in
我正在尝试从头开始编写 getElementByClassName,但我不确定何时返回递归。这就是我想到的: const getElementsByClassName = (nameOfClass
查找了这个问题的几个“答案”,但大多数只是人们没有将 getElementsByName() 返回的结果视为 NodeList! 编辑:我试图根据被点击的元素隐藏/显示元素。我可以使用 documen
当我命名我的控件以便在 POST 或 GET 中获取数组时,我经常使用这种表示法。 所以在我的脚本中我可以做 $value) { doSomething(); } ?> 经常发生我需要在
如何在 getElementsByName 中使用正则表达式遍历所有元素? 最佳答案 如果你的意思是: var elementArray = document.getElementsByName("/
我是一名优秀的程序员,十分优秀!