【问题标题】:Load function in loop循环加载函数
【发布时间】:2020-08-21 13:12:51
【问题描述】:

我有一个有效的loadfunction。但是当我在一个循环中使用它时,它不会工作,数据没有被提取或者代码没有(正确)触发。查看控制台时没有错误。很难确定为什么没有显示数据。

在此代码中,当用户选择第一个select 列表中的一项时,第二个select 列表将使用相应的数据进行更新。

<select class="form-control" id="add_off_relatie_id" name="add_off_relatie_id" onchange="add_contact_table_4()">';
    foreach ($rows_adr as $row_adr)
    {
        echo '<option ';if($row['relatie_id'] == $row_adr['id']) { echo 'selected="selected"';} echo 'value="'.$row_adr['id'].'">'.$row_adr['naam'].'</option>';
    }
    echo '
</select>

<select class="form-control" id="add_off_contact_id" name="add_off_contact_id" onchange="validate_add_off_table_4()">';
    foreach ($rows_cnt as $row_cnt) if($row_cnt['relatie_id'] == $row['relatie_id'])
    {
        echo '<option ';if($row['contact_id'] == $row_cnt['id']) { echo 'selected="selected"';} echo 'value="'.$row_cnt['id'].'">'.$row_cnt['naam'].'</option>';
    }
    echo '
</select>

<script type="text/javascript">
function add_contact_table_4()
{
    $('#add_off_contact_id').load('includes/dynamic_drop/relatie_contact.php?choice=' + document.getElementById('add_off_relatie_id').value)
}
</script>

但是,当在 for 循环中使用相同的结构并且用户在第一个 select 列表中选择一个新项目时,第二个 select 列表中的数据不会更新。

<select class="form-control" id="edit_off_relatie_id['.$i.']" name="edit_off_relatie_id" onchange="edit_contact_table_4(this, '.$i.')">';
    foreach ($rows_adr as $row_adr)
    {
        echo '<option ';if($row_table_4['relatie_id'] == $row_adr['id']) { echo 'selected="selected"';} echo 'value="'.$row_adr['id'].'">'.$row_adr['naam'].'</option>';
    }
    echo '
</select>

<select class="form-control" id="edit_off_contact_id['.$i.']" name="edit_off_contact_id" onchange="validate_edit_off_table_4(this, '.$i.')">';
    foreach ($rows_cnt as $row_cnt) if($row_cnt['relatie_id'] == $row_table_4['relatie_id'])
    {
        echo '<option ';if($row_table_4['contact_id'] == $row_cnt['id']) { echo 'selected="selected"';} echo 'value="'.$row_cnt['id'].'">'.$row_cnt['naam'].'</option>';
    }
    echo '
</select>

<script type="text/javascript">
function edit_contact_table_4(selectVeld, nr)
{
    $('edit_off_contact_id['+nr+']').load('includes/dynamic_drop/relatie_contact.php?choice=' + document.getElementById('edit_off_relatie_id['+nr+']').value)
}
</script>

任何建议都会很棒。

【问题讨论】:

  • 您尝试过怎样调试该问题?
  • @HarishST ID 对 $i 来说是唯一的
  • @NicoHaase 我已经尝试从代码中删除['$i'],它适用于循环的第一个。

标签: javascript php


【解决方案1】:

方括号用于特殊任务,比如获取属性,比如input[name=something],所以需要转义:

$('edit_off_contact_id\\['+nr+'\\]').load('includes/dynamic_drop/relatie_contact.php?choice=' + document.getElementById('edit_off_relatie_id\\['+nr+'\\]').value)

或者您可以更改 id 的字符串格式:

<select class="form-control" id="edit_off_relatie_id-' . $i . '" name="edit_off_relatie_id" onchange="edit_contact_table_4(this, ' . $i . ')">';
    foreach ($rows_adr as $row_adr)
    {
        echo '<option ';if($row_table_4['relatie_id'] == $row_adr['id']) { echo 'selected="selected"';} echo 'value="'.$row_adr['id'].'">'.$row_adr['naam'].'</option>';
    }
    echo '
</select>

<select class="form-control" id="edit_off_contact_id-' . $i . '" name="edit_off_contact_id" onchange="validate_edit_off_table_4(this, ' . $i . ')">';
    foreach ($rows_cnt as $row_cnt) if($row_cnt['relatie_id'] == $row_table_4['relatie_id'])
    {
        echo '<option ';if($row_table_4['contact_id'] == $row_cnt['id']) { echo 'selected="selected"';} echo 'value="'.$row_cnt['id'].'">'.$row_cnt['naam'].'</option>';
    }
    echo '
</select>



<script type="text/javascript">
function edit_contact_table_4(selectVeld, nr)
{
    $(`edit_off_contact_id-${nr}`).load('includes/dynamic_drop/relatie_contact.php?choice=' + document.getElementById(`edit_off_relatie_id-${nr}`).value)
}
</script>

【讨论】:

  • 谢谢,这对我帮助很大。我不得不使用$('edit_off_contact_id\\['+nr+'\\]').load('includes/dynamic_drop/relatie_contact.php?choice=' + document.getElementById('edit_off_relatie_id['+nr+']').value)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多