Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从选择数组字段填充文本框_Php_Javascript - Fatal编程技术网

PHP从选择数组字段填充文本框

PHP从选择数组字段填充文本框,php,javascript,Php,Javascript,我需要用Select下拉列表的结果填充相关文本框 到目前为止,我的Javascript是 <script language="JavaScript"> var mytextbox = document.getElementById('error'); var mydropdown = document.getElementById('errormsg_id'); mydropdown.onchange = function(){ mytextbox.value = thi

我需要用Select下拉列表的结果填充相关文本框

到目前为止,我的Javascript是

<script language="JavaScript">
var mytextbox = document.getElementById('error');
var mydropdown = document.getElementById('errormsg_id');

mydropdown.onchange = function(){
     mytextbox.value = this.value;
}
</script>
我的选择框和文本框是根据查询生成的数组,因此它们有多个。 我需要能够用旁边选择的结果填充相应的文本框

有什么想法吗

谢谢

    <td width="1%">

    <select style="width:100%" name="errormsg_id[]"  id="errormsg_id[]">

    <?php do { ?> 

    <option value="<?php echo  $row_rserrormsg['errormsg_id']?>"
    <?php if ($row_rsdates['errormsg_id'] == $row_rserrormsg['errormsg_id'])                 {              echo("selected='selected'"); } ; ?> >
<?php echo $row_rserrormsg['error_message']?></option>

<?php } while ($row_rserrormsg = mysql_fetch_assoc($rserrormsg)); ?>

<?php  mysql_data_seek($rserrormsg, 0);
$row_rserrormsg = mysql_fetch_assoc($rserrormsg);?>
</select>
</td>  

<TD  align="center" class="adminuser">
<input style="width:96%;text-align:left;"  autocomplete="on"  title="Enter Error    Message" type="text" name="error[]" id="error[]" value="<?php echo $row_rsdates['error_message']; ?>" maxlength="100"/> 
</TD>

假设您将使用jQuery,并且您的HTML如下所示:

<table>
    <tr>
        <td><select class="my_select" name="errormsg_id1[]" id="errormsg_id1">...</select></td>
        <td><input name="errormsg_id1_txt" id="errormsg_id1_txt" title="..." />
    </tr>
    ...
    <tr>
        <td><select class="my_select" name="errormsg_idX[]" id="errormsg_idX">...</select></td>
        <td><input name="errormsg_idX_txt" id="errormsg_idX_txt" title="..." />
    </tr>
</table>
希望它是正确的,没有时间测试它…

下面是一个关于如何让它与示例一起工作的示例:

我认为这种方法比@shadyyx好一点,因为它消除了手动增加输入和选择字段名的需要

<table>
<tr>
    <td><select class="select" name="errormsg_id[]">
            <option val="test1">Test1</option>               
            <option val="test2">Test2</option>                
            <option val="test3">Test3</option>
        </select></td>
    <td><input class="error_text" name="errormsg_id_txt[]" title="..." />
</tr>
...
<tr>
    <td><select class="select" name="errormsg_id[]">               
            <option val="test1">Test1</option>               
            <option val="test2">Test2</option>                
            <option val="test3">Test3</option>
        </select></td>
    <td><input class="error_text" name="errormsg_id_txt[]" title="..." />
</tr>
</table>
注意:如果您使用的是纯Javascript,请参阅


您需要考虑唯一标识对应元素集的方法。我建议的最方便的方法是使用数据行的主键值

比如说

while($row = mysqli_fetch_assoc($result)) {
   $id = $row['id']; //A primary key field


   echo '<input type="text" name="text'.$id.'" id="text'.$id.'" />';
   echo '<select name="select'.$id.'" id="select'.$id.'" />...</select>";
}

问题被标记为javascript。jQuery alternative不是必需的。@Starx这就是向下投票的原因?因为我建议使用jQuery?如果不需要某些内容,但这并不意味着有人可以推荐更简单、更好的方法来解决OP需要的相同解决方案。请格式化您的问题,使其更具可读性。可以删除否决票。jQuery和Vanilla JS都已经提供了,我不喜欢直接在元素中使用OneEvent调用与纯JS结合使用。这是一种古老的解决方案。。。假设你有500个元素,每个元素携带Onchange = UpDead“这个”,“带有这个值”…虽然每个元素只能有一个类,但大多数情况下它都定义了一个类,您可以将事件侦听器挂起到…@shadyyz,不管是否为旧方式。这是可能的方法之一。即使没有jquery,这也是更好的方法。没有冒犯的意思,但是我不认为这对我或OP有任何重要性,不管你喜欢与否。
$(document).ready(function(){
    $('.select').change(function(){
       $(this).parent().parent().find('.error_text').val($(this).val());
    });
});
<table>
<tr>
    <td><select class="select" name="errormsg_id[]" id="errormsg_id1" onChange="update('errormsg_id1')">
            <option val="test1">Test1</option>               
            <option val="test2">Test2</option>                
            <option val="test3">Test3</option>
        </select></td>
    <td><input class="error_text"name="errormsg_id_txt[]" id="errormsg_id_txt1" title="..." />
</tr>
...
<tr>
    <td><select class="select" name="errormsg_id[]" id="errormsg_id2" onChange="update('errormsg_id2')">               
            <option val="test1">Test1</option>               
            <option val="test2">Test2</option>                
            <option val="test3">Test3</option>
        </select></td>
    <td><input class="error_text" name="errormsg_id_txt[]" id="errormsg_id_txt2" title="..." />
</tr>
</table>
function update(element){
    var e = document.getElementById(element);
    var id = element.substring(element.length-1);
    document.getElementById("errormsg_id_txt"+id).value = e.value;
}
while($row = mysqli_fetch_assoc($result)) {
   $id = $row['id']; //A primary key field


   echo '<input type="text" name="text'.$id.'" id="text'.$id.'" />';
   echo '<select name="select'.$id.'" id="select'.$id.'" />...</select>";
}
echo '<select name="select'.$id.'" id="select'.$id.'" onchange="updateBox(\'text'.$id.'\', this.value)" />...</select>";
function updateBox(element, value) {
    el = document.getElementById(element);
    el.value = value;
}