duanping1920 2018-07-27 19:33
浏览 49
已采纳

使用ajax在循环中填充表单字段

The first row only works in my row.

<?PHP for ($i = 1; $i <= 20; $i++){ ?>
            <div id="lines" class="row">
                <div class="col-sm-1" style="text-align:left;border:1px solid #808080"><span id="row_number"><?PHP if ( $i < 10 ){ echo "0".$i;}else{echo $i;} ?></span></div>
                <div class="col-sm-2" style="text-align:left;border:1px solid #808080">
                    <select id="part_number" style="border:0px;">
                        <option value="None Selected"></option>
                        <?PHP
                            $partNumbers = $wpdb->get_results("SELECT * FROM _cif_inventory_table;");
                                foreach ($partNumbers as $partNumber) {
                                    echo '<option value="'.$partNumber->part_number.'">'.$partNumber->part_number.'</option>';
                                }
                        ?>
                    </select>
                </div>
                <div class="col-sm-1" style="text-align:left;border:1px solid #808080"><input size="5" maxlength="5" id="quantity" value="" /></div>
                <div class="col-sm-6" style="text-align:left;border:1px solid #808080"><input size="75" id="description-<?PHP echo $i; ?>" value="" /></div>
                <div class="col-sm-1" style="text-align:left;border:1px solid #808080"><input id="unitPrice-<?PHP echo $i; ?>" /></div>
                <div class="col-sm-1" style="text-align:left;border:1px solid #808080"><input id="amount" value="" /></div>
            </div><!-- end .row -->
        <?PHP } ?>

I'm pretty sure it's the id's that aren't working as expected because they are all the same so I decided to add my loop counter to my id <input size="75" id="description-<?PHP echo $i; ?>" value="" /> and <input id="unitPrice-<?PHP echo $i; ?>" /> but I am confused on how to got this on the ajax side I tried to do it like

UPDATE

    $.ajax({
    url: '<?PHP echo admin_url('admin-ajax.php'); ?>',
    type: 'post',
    data: { action: 'description', part_number: part_number },
    success: function(data) {

        for ( var i = 1; i <= 20; i++ ) {
          $('#description-' + i).val( data );
        }
    }
    });

but this populates every description field on the selection of the dropdown on row 1.

  • 写回答

2条回答 默认 最新

  • douhuang9886 2018-07-27 19:46
    关注

    First, switch your loop to javascript instead of php.

    for (var i = 1; i <= 20; i++) {
    
    }
    

    Then, add string concatenation for the ID.

    for (var i = 1; i <= 20; i++) {
        $('#description-' + i).val( data );
    }
    

    That's how to properly select the HTML element, however, with your current code all of their values will be set to the same value.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器