У меня есть следующее Код 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, превышать старое qty (я использую этот метод для передачи 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>
Я использовал alert
в JavaScript чтобы проверить, собраны ли правильные значения, и кажется, что он работает как нужно, но НЕ для проверки, если новый qty больше старого qty, кажется, что он работает только для первых 4 строк, затем он застревает и начинает проверять новый qty в любая строка с первым старым кол-во строк .. Надеюсь, это имеет смысл для вас.
Любая альтернатива или предложение будут оценены.
Спасибо парень
Одна проблема с вашим кодом состоит в том, что каждый раз, когда вы вводите значение в nqty и onchange, вызывается функция check_not_large, которая не только проверяет значения nqty и cqty текущей строки, но также и все предыдущие значения строк nqty и cqty. Если ваша цель состоит в том, чтобы проверять только, если текущее значение nqty строки больше, чем значение cqty, гораздо более аккуратный код будет давать некоторое уникальное значение id каждому элементу nqty и cqty. Код для того же самого может быть оптимизирован, как указано ниже.
Код 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>
Других решений пока нет …