我有一个填充了mysql数据的表。我想根据下拉列表的值更改文本框值。我所做的只是第一行更改其值,但下一行不起作用。 以下是我的代码。
//this is inside while loop
<input type='text' name='qqty[]' value='<?php echo $avail; ?>' id="avail" class='form-control1' readonly = 'readonly'>
<select class="form-control1" name="qty[]" id="sType" onChange="check();">
<option value="<?php echo $avail;?>"><?php echo $Uconv;?></option>
<option value="<?php echo $qty;?>"><?php echo $uom;?></option>
</select>
//my javascript code
<script>
function check() {
document.getElementById("avail").value = document.getElementById("sType").value;
}
</script>
答案 0 :(得分:3)
您必须为每个输入提供单独的ID,然后找到它。假设你的迭代变量是new
:
object
答案 1 :(得分:0)
如果你在循环中有这个代码,你有多个具有相同id(avail
等)的元素。当你执行getElementById
时,它将仅返回具有该id的第一个元素AKA,即第一行。
你应该在每个元素中添加唯一的id,比如说,在循环中添加一个递增的整数,如下所示:
<?php
for ($x = 0; $x <= 10; $x++) {
?>
<input type='text' name='qqty[]' value='<?php echo $avail; ?>' id="avail_<?php echo $x; ?>" class='form-control1' readonly = 'readonly'>
<select class="form-control1" name="qty[]" id="sType_<?php echo $x; ?>" onChange="check('<?php echo $x; ?>');">
<option value="<?php echo $avail;?>"><?php echo $Uconv;?></option>
<option value="<?php echo $qty;?>"><?php echo $uom;?></option>
</select>
<?php
}
?>
<script>
function check(i) {
document.getElementById("avail_"+i).value = document.getElementById("sType_"+i).value;
}
</script>
答案 2 :(得分:0)
尝试这种方式:
<select onchange="ChooseContact(this)">
<option value='1'>1</option>
<option value='2'>2</option>
</select>
<input id="friendName">
function ChooseContact(data) {
document.getElementById ("friendName").value = data.value;
}
答案 3 :(得分:-1)
您正在通过id引用第一行元素。 您需要更改每行的ID,并根据您编辑的行更改值。